在处理JavaScript函数时,name是一个特殊属性

Aar*_*ver 2 html javascript

<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>
Run Code Online (Sandbox Code Playgroud)

这在Chrome/IE8中无效.IE8状态Object不支持此操作.它与作为名称的函数的名称有关.如果我改变函数的名称人们它的工作原理......怎么办?

bob*_*nce 7

这不是一个保留的词,它不是一个冲突window.name.有与使用问题window属性名作为在IE中一个全局变量,但你已经声明它们使用全局变量是只要确定varfunction关键字,你在这里.

你在这里有一个奇怪的 - 据我所知,未记录的IE-quirk(由WebKit复制),其中,在通过内联属性声明的事件处理程序中,目标元素的属性被视为局部变量.这可能是因为您可以编写如下代码:

<input name="foo" value="bar" onclick="alert(name+': '+value)"/>  // foo: bar
Run Code Online (Sandbox Code Playgroud)

this.name显然,cos说太难了.IE尝试"方便"再次导致奇怪的不可预测的错误.

这是不使用内联事件处理程序属性的另一个原因.没有他们:

<input id="doit" type="button" value="Do it"/>

<script type="text/javascript">
    document.getElementById('doit').onclick= function() {
        name('bob');
    };
</script>
Run Code Online (Sandbox Code Playgroud)

工作良好.