我正在尝试从 php 脚本打开一个窗口。但是当我点击时出现此错误
线路:389 错误:“surgExpressBuildDefaultButton”为 null 或不是对象
第389行代码如下
function setupLayout(i)
{
document.body.onselectstart = function()
{
if (event.srcElement.tagName.search(/input|textarea/i)) return false;
}
setupButtons();
if(window.parent.opener.parent.frames[0].surgExpressBuildDefaultButton)
{
buttonClick(window.parent.opener.parent.frames[0].surgExpressBuildDefaultButton);
}
else
{
layout.buttons.commonButton.fixSelected();
}
for(i = 0; i < da.imgPlus.length; i++)
{
da.imgPlus[i].onclick = clickPlus;
da.imgMinus[i].onclick = clickMinus;
}
for(i = 0; i < da.spnName.length; i++)
{
da.spnName[i].selected = 0;
da.spnName[i].title = da.spnName[i].innerText;
da.spnName[i].onclick = function(){selectCommonProcedure(this);}
da.spnName[i].ondblclick = function(){addCommonProcedure(this);}
da.spnName[i].onmouseout = function(){this.className = (this.selected ? "nSelected" : "nOut");}
da.spnName[i].onmousedown = function(){this.className = "nDown";}
da.spnName[i].onmouseover = da.spnName[i].onmouseup = function(){this.className = "nOver";}
}
da.inpSearch.onkeydown = function(){if(event.keyCode == 13) updateProcedureList();}
da.btnSearch.onclick = da.selSpecialty.onchange = updateProcedureList;
da.btnClose.onclick = function(){window.close();}
da.btnAdd.disable = da.btnSave.disable = CC.Disable;
da.btnAdd.disable(1);
da.btnAdd.onclick = addCommonProcedure;
da.btnSave.disable(1);
da.btnSave.onclick = saveExpress;
}
可能是什么问题。有什么想法吗?
最佳答案
如果不知道这四打行中的哪一行是第 489 行,就很难判断,但这让我感到惊讶:
function setupLayout(i)
{
document.body.onselectstart = function()
{
if (event.srcElement.tagName.search(/input|textarea/i)) return false;
^-- here
您正在使用事件
而没有声明它(至少在您引用的代码中没有声明)。在 IE 上,这会起作用,因为 IE 使事件对象成为 window
的属性(除非它们被其他声明隐藏,否则您可以访问 window
属性,而无需显式限定)它们),但在大多数其他浏览器上,事件对象是事件处理函数的参数 - 因此代码会尝试使用 未定义
值作为对象引用,这会准确触发您的错误消息又看到了。
处理浏览器中这种差异的常用习惯用法(除了使用像jQuery或Prototype这样的库来为您处理它)是这样的:
document.body.onselectstart = function(event)
{
event = event || window.event;
// ...
};
该惯用语将事件
声明为函数的参数,但随后让它回退到查看窗口
(以支持 IE)。
关于javascript 错误为 null 或不是对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2649199/