当输入的name属性相同时,为什么我的函数不返回函数?

时间:2016-10-05 12:24:57

标签: javascript

使用onclick调用函数时发现了一些奇怪的东西。假设我有一个类型复选框的输入(它几乎可以是任何类型的输入),附带一个name属性和一个onclick,调用一个函数:

function myFunction() {
    alert("Hello World");
}
<form action='' method='post'>
      <input type='checkbox' name='myFunction' onclick="myFunction()">
</form>

您可以看到,当输入的名称和功能的名称相同时,我得到TypeError: myFunction is not a function

但是当它们不同时,函数调用效果很好。我无法在任何地方找到任何关于此的文档。有人可以对此有所了解吗?

function myFunction() {
    alert("Hello World");
}
<form action='' method='post'>
      <input type='checkbox' name='testName' onclick="myFunction()">
</form>

1 个答案:

答案 0 :(得分:2)

根据spec

  

控件的“控件名称”由其name属性给出。范围   FORM元素中控件的name属性是FORM   元件。

因此,名称的范围在 FORM 中更改,就像变量的范围在function内再次声明时更改一样。

在没有表单

的情况下尝试此操作

function myFunction() {
    alert("Hello World");
}
      <input type='checkbox' name='myFunction' onclick="myFunction()">