我想我知道为什么这会给Firefox带来错误,但为什么它在IE / Chrome中的工作方式不同?
html:
<a id="hello" onclick="go(hello)">Hello World</a>
javascript:
function go() {
arguments[0] = 'this is my argument';
alert(arguments[0]);
};
只是想知道为什么在IE&amp;它警告'这是我的论点',但在Firefox中它表示变量undefined。有线索吗?我知道如果我把'hello'这样的引号问好,它将适用于所有浏览器。
答案 0 :(得分:3)
因为hello
未定义而导致代码失败..
使用go('hello')
代替..
这不是参数问题,而是每个浏览器如何评估字符串以成为实际代码。
答案 1 :(得分:0)
或者您可以再次传递this.id
作为参数:
go(this.id)
答案 2 :(得分:0)
在IE中,由于hello
尚未被声明,因此它被视为window.all['hello']
,因此在IE上函数调用实际上有效。
答案 3 :(得分:0)
这里的所有答案都是事实上正确的。但是,这里真正的问题是IE自动为所有带有id的节点创建全局变量。由于你的节点的id是'hello',IE创建了一个名为hello的全局变量,它是传递给处理程序的。这是非标准行为,您不应该使用它。从您的代码中,不清楚您需要传递什么。如果你想要点击的对象,只需使用onclick="go(this); return false;"
或者甚至更好,使用不引人注目的方法。
如果您将节点ID更改为“hello-mama”,那么您的代码将在所有浏览器中被破坏:)