<body>
<script type="text/javascript">
function name(firstname)
{
alert("Your firstname: " + firstname);
}
</script>
<form>
<input type="button" value="Do it" onclick="name('aaron')"/>
</form>
</body>
这在 Chrome/IE8 中不起作用。 IE8 状态对象不支持此操作。它与 name 的函数名称有关。如果我将函数的名称更改为 people 它会起作用...有什么好处?
最佳答案
它不是保留字,而且不与window.name
冲突。在 IE 中使用 window
属性名称作为全局变量存在问题,但只要您使用 var
将它们声明为全局变量就没问题> 或 function
关键字,如此处所示。
这里有一个奇怪的——据我所知,未记录的——IE 怪癖(由 WebKit 复制),在通过内联属性声明的事件处理程序中,目标元素的属性被视为局部变量.这大概是您可以编写如下代码:
<input name="foo" value="bar" onclick="alert(name+': '+value)"/> // foo: bar
因为说 this.name
显然太难了。 IE 再次试图“方便”导致奇怪的不可预测的错误。
这只是不使用内联事件处理程序属性的另一个原因。没有他们:
<input id="doit" type="button" value="Do it"/>
<script type="text/javascript">
document.getElementById('doit').onclick= function() {
name('bob');
};
</script>
工作正常。
关于javascript - name 是处理 JavaScript 函数时的一个特殊属性吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4006323/