开发者

javascript error is null or not an object

I am trying to open a window from a php script. But when I click I get this error

Line: 389 Error: 'surgExpressBuildDefaultButton' is null or not an object

Line 389 code is as follow

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;
}

what could be the problem. Any idea?


It's hard to tell without knowing which of those four dozen lines is line 489, but this jumped out at me:

function setupLayout(i)
{
 document.body.onselectstart = function()
 {
  if (event.srcElement.tagName.search(/input|textarea/i)) return false;
      ^-- here

You're using event without having declared it (at least, not in the code you quoted). On IE, that'll work because IE makes the event object a property of window (and unless they're shadowed by other declarations, you can access window properties without explicitly qualifying them), but on most other browsers the event object is an argument to the event handler function – and so that code tries to use an undefined value as an object reference, which triggers exactly the error message you're seeing.

The usual idiom for dealing with this discrepancy in browsers (other than using a library like jQuery or Prototype that handle it for you) is this:

document.body.onselectstart = function(event)
{
    event = event || window.event;
    // ...
};

That idiom declares event it as an argument to the function, but then has it fall back to looking on the window (to support IE).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜