Javascript 未捕获类型错误:lang不是函数

Javascript 未捕获类型错误:lang不是函数,javascript,typeerror,Javascript,Typeerror,在我的HTML中,我在script标记中定义了lang函数,并添加了“testfire!”按钮,该按钮必须在单击时调用lang: 测试功能 函数lang(){ 警报(“你好,世界!这次是JavaScript”); } 考虑以下代码: 没有理由复杂化(我真的不知道为什么它不起作用),但您可以使用: 直接在输入中添加警报 结果: 或 将侦听器添加到输入 function lang() { alert("Hello, World! It's JavaScript this time"

在我的HTML中,我在
script
标记中定义了
lang
函数,并添加了“testfire!”按钮,该按钮必须在单击时调用
lang


测试功能
函数lang(){
警报(“你好,世界!这次是JavaScript”);
}
考虑以下代码:


没有理由复杂化(我真的不知道为什么它不起作用),但您可以使用:

  • 直接在输入中添加警报

结果:

将侦听器添加到输入

function lang() {
   alert("Hello, World! It's JavaScript this time");
}

document.getElementById('test').onclick = lang

结果:

有趣。。。检查这个fiddle:它通过JS调用函数,成功了,但单击失败。我很想看到这个函数的结果,因为这是一个有趣的问题。这似乎是
onclick
属性的问题。即使通过JS:
document.getElementById('foo')分配onclick也可以很好地工作。onclick=lang
@RichardBarker-EMACS完全不同。它叫ECMAScript。这不仅发生在Chrome上,也发生在Firefox上。与之相同,但使用
lang
而不是
animate
。我这里的目的不是生成警报。我刚才说明了调用“lang()”不起作用。@SanyamMishra然后将侦听器添加到我的第二个选项按钮!所以我假设Firefox和Chrome都有这个
范围,而IE没有这个范围?@SpencerWieczorek这三种浏览器似乎都是这样。这个问题对我来说也是新问题。我不确定这是否是一个指定和记录的功能…至少对于Firefox来说,这似乎与怪癖模式无关。@SanyamMishra,IE显然没有将代码封装在
onclick
中,而是隐式地
使用
作用域,这与其他浏览器不同。@RichardBarker我在回答中没有写过吗?使用
addEventListener
!或者使用任何不是全局属性的函数名,或者使用
onclick
的元素的任何属性或属性名(祝您每次都猜对了)。只要坚持现代标准(
addEventListener
),你通常会少一些麻烦。@RichardBarker这很可能是一个设计决定。无论如何,不鼓励使用
onclick
属性。