【发布时间】:2013-06-17 22:34:33
【问题描述】:
有一段HTML:
<input onclick="start();" type="button" value="Start!"/>
在 Firefox 和 Chrome 中,它在点击时调用 start。但是在 IE9 中它会产生错误消息:SCRIPT5002: Function expected。然后我尝试了几种不同的情况:
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<script>
function start(){
alert("Let's start");
}
function stop(){
alert("Let's stop");
}
</script>
<input onclick="start();" type="button" value="Start!"/><br/> <!-- Failed : the main issue -->
<span onclick="start();">Start!</span><br/> <!-- Work -->
<input onclick="stop();" type="button" value="Stop!"/><br/> <!-- Work -->
<input onclick="start();" type="text" value="Start!"/><br/> <!-- Failed -->
<input onmouseover="start();" type="button" value="Start!"/><br/> <!-- Failed -->
</body>
</html>
- 原案:失败(这就是我在这里的原因。)
- 使用
span代替input:成功 - 使用另一个函数名:Success
- 使用其他类型:失败
- 使用
onmouseover代替onclick:失败
我使用了调试器,它说start 是function start(){alert("Let's start");}。然后我用了alert(start),上面写着fileopen。
作为测试 3 的结果,我可以通过更改名称轻松解决问题,但我想知道为什么会发生此错误在某些情况下,但在其他情况下不会发生。 编辑: 或者下一个最好的方法,其他解决方法而不更改名称。
【问题讨论】:
-
首先,从您的 html 中删除所有 javascript!将您的 javascript 保存在 js 文件中。 :)
-
@Johan 实际上我做了,但我得到了错误,然后我把 JavaScript 放在 HTML 中发布在这里。
-
可能您已经用函数以外的其他类型重新定义了另一个
start变量。它也可以是隐藏原始全局变量的 HTML 元素的id。 -
@Teemu 在我给出的代码中没有这样的东西,在我正在开发的代码中也没有。
-
将代码复制到小提琴中并检查 IE 10 似乎可以重现问题,但只需将
start函数的名称更改为其他名称即可解决此问题。另外,最好在 JS 中绑定事件处理程序,而不是内联它们。
标签: javascript html internet-explorer