Onclick事件没有解雇(这是如此基本,我会疯了吗?)

时间:2012-08-10 18:57:21

标签: javascript html

  

可能重复:
  “uncaught TypeError: Object is not a function” in JavaScript

我的完整js文件是这样的:

function addInning() {
    alert("hello");
}

我的html文件包含该元素     <input name="addInning" type="button" value="Add Inning" id="addInning" onclick="addInning();">

并且代码不会执行。对于我的生活,我无法弄清楚为什么,因为这只是最简单的事情。 chrome的错误是“Uncaught TypeError:object is not function”。我在stackoverflow上搜索,发布的解决方案没有帮助。我觉得我正在失去理智。

完整代码:http://jsfiddle.net/BUsPC/

3 个答案:

答案 0 :(得分:3)

问题在于onclick="addInning();"addInning指的是input元素,因为这是为其nameid属性设置的值。仅当input标记是form元素的子标记时,才会出现此行为。

这个DEMO强调了这种行为。

要解决您的问题,请更改两者的名称 input的{​​{1}}和id,或name的名称。此外,您可以明确地引用这样的全局函数:

addInning

使用后一个选项查看您的工作fiddle。小心使用JSFiddle,因为默认情况下它会将所有JS包装在onclick="window.addInning();" 事件中。您可以通过定义window.onload来保持默认行为,如下所示:

addInning

我学到了新东西!

答案 1 :(得分:2)

将名称和ID从“addInning”更改为其他内容。这对我有用。

<script type="text/javascript">
    function addInning()
    {
        alert("hello");
    }

</script>
<input name="addInning2" type="button" value="Add Inning" id="addInning2" onclick="addInning();">

答案 2 :(得分:0)

由于它是一个函数,请尝试返回一些东西:

function addInning() {
   alert("hello");
   return true;  // or return false; to prevent the click
}