1

可能重复:
JavaScript 中的“未捕获的 TypeError:对象不是函数”

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

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

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

并且代码不会执行。对于我的生活,我无法弄清楚为什么,因为这只是可能的最简单的事情。chrome 的错误是“未捕获的 TypeError:对象不是函数”。我在stackoverflow上进行了搜索,发布的解决方案没有帮助。我觉得我快疯了。

完整代码在这里:http: //jsfiddle.net/BUsPC/

4

3 回答 3

3

问题在于 in onclick="addInning();",addInning指的是input元素,因为这是为其nameid属性设置的值。input只有当标签是元素的子元素时才会提示此行为form

这个演示突出了这种行为。

要解决您的问题,要么更改'的名称,要么更改. 此外,您可以像这样显式引用全局函数:inputidnameaddInning

onclick="window.addInning();"

使用后一个选项查看您的工作小提琴。小心使用 JSFiddle,因为它window.onload默认将所有 JS 包装在一个事件中。您可以通过如下定义来保持默认行为addInning

window.addInning = function () {
    alert("hello");
}​;​

我学到了新东西!

于 2012-08-10T19:08:22.620 回答
2

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

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

</script>
<input name="addInning2" type="button" value="Add Inning" id="addInning2" onclick="addInning();">
于 2012-08-10T19:07:37.053 回答
0

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

function addInning() {
   alert("hello");
   return true;  // or return false; to prevent the click
}
于 2012-08-10T19:01:25.830 回答