如何重现:脚本错误,“对象不支持此属性或方法。”

时间:2008-11-20 23:05:07

标签: javascript html internet-explorer

任何人都可以给我一个可以在IE 7.0上重现此错误的脚本(HTML / CSS / Javascript)吗?我试图在我的页面中修复此错误,我收到此警告,但无法确切地发现问题。行号也与源不匹配。

我认为更好的方法是创建一个bug,然后逐步处理它,而不是做出一些猜测!

5 个答案:

答案 0 :(得分:2)

正如Shog所说,当您尝试在没有该方法的对象上调用方法时,会发生该错误。

这通常是由于某个对象在您期望它时为null,而且不是null。

var myEl = document.getElementById('myElement');
myEl.appendChild(...)

如果“#myElement”元素不存在,上面的示例将导致该错误。

如果它只发生在IE而不是Firefox上,很可能是因为你使用的是IE不支持的方法。

解决方案?您可以尝试脚本调试器,但我从未发现它本身就很有用。最可靠但又很慢的方法是alert()调试。在您的代码的关键点,输入带有唯一消息的警报。在某些时候IE会抛出一个错误,所以你会知道错误介于你看到的最后一个警报和下一个没有警告的错误之间。

function myFunc() {
    alert('a');
    var myEl = document.getElementById('myElement');
    myEl.appendChild(something);
    alert('b');
    // more code
}

如果你跑了,你看到'a'而不是'b',你知道它介于某处。这只是IE中javascript的悲伤状态,我很害怕。

答案 1 :(得分:1)

如果您使代码遵循jslint.com规则,它将会消失。 它还会指出您的代码中问题的确切位置。

答案 2 :(得分:1)

  

我认为更好的方法是   创建一个错误然后处理它   逐步而不是制造一些   猜猜!

你错了。有无数的场景可能会产生您所看到的错误。这意味着你试图调用一个未定义的方法。例如:

var blah = {};
blah.methodWhichDoesntExist(); // <-- error

这可能是由于输入错误,某些其他组件未检测到故障,或伽玛射线在保存后一直在HTML中翻转位。如果不了解更多关于你正在做的事情的话,很难更具体。

答案 3 :(得分:0)

对于IE,请下载Microsoft Script Debugger

答案 4 :(得分:0)