10

有一段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>
  1. 原始案例:失败(这就是我在这里的原因。)
  2. 使用 aspan代替input:成功
  3. 使用另一个函数名称:Success
  4. 使用不同的类型:失败
  5. 使用onmouseover代替onclick:失败

我使用了调试器,它说startfunction start(){alert("Let's start");}. 然后我用alert(start)了,它说fileopen

作为测试 3 的结果,我可以通过更改名称轻松解决问题,但我想知道为什么在某些情况下会发生此错误而在其他情况下不会发生。编辑:或者下一个最好的事情,其他解决方法而不更改名称


有什么方法可以在 SSRS 2005 中创建辅助轴

我正在编写 SSRS 2005 中的报告,该报告需要图表才能具有辅助轴。

不允许使用第三方应用程序的建议。

在图表中获取辅助轴及其值是一项严格的要求。

4

2 回答 2

12

startinput是IE中元素的属性。(根据微软的说法,它表示“何时开始播放视频剪辑文件。”我不知道这意味着什么,但这并不重要。)在您的控制台中,您可以通过运行以下命令来查看:

> document.createElement("input").start
"fileopen"

在元素的内联事件处理程序中,该元素的所有属性都可用作顶级变量。就好像内联代码在一个with(thisParticularElement)块内运行(thisParticularElement显然,带有侦听器的元素在哪里)。因此,在内联事件代码的上下文中,变量startstart的是元素的属性,它是一个字符串,而不是一个函数。

只需更改函数名称,或window.start显式使用。

于 2013-06-17T14:29:09.097 回答
1

这是有趣的。我自己做了很少的测试,似乎发生了这个错误,因为start已经是 input element 的属性。所以它会尝试调用属性,而不是函数。

我认为这是一个错误。

试试下面的代码:

<script>
        function autocomplete(){
            alert("");
        }
        function vspace(){
            alert("");
        }
        function hspace(){
            alert("");
        }


    </script>

<input id="error" onclick="autocomplete();" type="button" value="Start!"/>
<input id="error2" onclick="vspace();" type="button" value="Start!"/>
<input id="error3" onclick="hspace();" type="button" value="Start!"/>

然后尝试在控制台中调试。也尝试var x = document.getElementById("error");然后调试 x 属性。

我在 IE8、IE9 和 IE10 中对此进行了测试。这些功能在我的 IE9 和 IE10 (Win 7 32bit) 中不起作用。

于 2013-06-17T14:33:54.737 回答