Event.observe(window, 'load', init, false) IE7.IE8出错,请各位大侠帮忙看看代码如下:
Event.observe(window, 'load', init, false);
function init(){
Event.observe('deleteBtn', 'click', removeSelectedRow, false);
Event.observe('viewBtn', 'click', onView, false);
Event.observe('editBtn', 'click', onEdit, false);

}prototype.js代码如下: _observeAndCache: function(element, name, observer, useCapture) {
    if (!this.observers) this.observers = [];
    if (element.addEventListener) {
      this.observers.push([element, name, observer, useCapture]);
      element.addEventListener(name, observer, useCapture);
    } else if (element.attachEvent) {
      this.observers.push([element, name, observer, useCapture]);
      element.attachEvent('on' + name, observer);
    }
  },网页出现的警告错误如下:
网页错误详细信息用户代理: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; CIBA; InfoPath.2)
时间戳: Sun, 16 May 2010 09:47:35 UTC
消息: 缺少对象
行: 3003
字符: 5
代码: 0
URI: http://***************/prototype.js
消息: 'null' 为空或不是对象
行: 46
字符: 4
代码: 0
URI: http://***************/***.jsp

解决方案 »

  1.   

    Event.observe($('...'), ...)试试看呢然后,removeSelectedRow这样的函数应当在这个调用之前定义
      

  2.   

    Event.observe(window, "load", init) --> 这个时候,你还没定义
    function init() {
    ....
    }所以,应该互换两者的位置。其他三个函数的位置和注册Event监听的道理一样。另外,我记不请Event.observe(“这个位置接受不接受ID”所以Event.observe($('deleteBtn'), ....)放心一点。
    另外,原先IE6下<input name="xxx">会自动对应$("xxx"),但是FF还有IE8下不行,需要显式指定<input name="xxx" id="xxx">