1

我有我的小提琴,但我不明白为什么它没有在“onmouseout”事件上调用我的函数。 http://jsfiddle.net/foreyez/Xf6LW/

有任何想法吗?

4

5 回答 5

3

工作正常,您只需将函数放在文档的头部(或元素在 DOM 中之后的正文)。

jsFiddle 示例

于 2012-09-13T20:07:02.490 回答
3

这是因为当您选择 onLoad 选项时,您在 JavaScript 面板中创建的函数不是全局的。你的 JavaScript 被封装在一个函数中。

如果您确实希望它们是全球性的,您必须执行 j08961 建议的操作,通过更改该下拉列表以说没有包裹(身体或头部)将起作用

最好的解决方案是不要从 HTML 设置事件处理程序,无论如何这都是不好的做法,那么你就不会依赖全局函数或混合 HTML 和 JS。

<div id="myDiv">
</div>​
document.getElementById('myDiv').onmousemove = function() {
  alert('here');
}

旁注:您应该已经注意到控制台中的错误说 myFunc 未定义或类似的东西。

于 2012-09-13T20:07:36.713 回答
0

我认为这是 jsfiddle 的原因,它在 HTML 之后声明了所有 javascript。HTML 将运行并寻找 amyFunc而不是找到它。然后它会加载 JS,它甚至不会运行它。

于 2012-09-13T20:09:29.557 回答
0

将 myFunc 设为全局函数;

我使用 firebug 搜索了我的代码并得到了以下生成的代码。

window.addEvent('load', function() {
    //window.myFunc makes myFunc as a global function
    // It can be accessed from any were inside current window.
   window.myFunc = function myFunc(x)
   {
        alert('yo');
   }
    // function below is not available gloably.
    function myFunct1(){
        alert('yo1');
    }
});

jsfiddle

于 2012-09-13T20:09:48.427 回答
0

在这里您可以看到更改:jsfiddle。

于 2012-09-13T20:11:36.477 回答