JsFiddle上的鼠标事件不起作用?

时间:2012-09-13 20:05:14

标签: javascript jsfiddle

我在这里得到了小​​提琴,但我无法理解为什么它不会在'onmouseout'事件上调用我的函数。 http://jsfiddle.net/foreyez/Xf6LW/

任何想法?

5 个答案:

答案 0 :(得分:3)

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

<强> jsFiddle example

答案 1 :(得分:3)

这是因为当您选择了onLoad选项时,您在JavaScript面板中创建的功能不是全局的。您的JavaScript包含在函数中。

如果你确实希望它们是全球性的,你必须要么做j08961所建议的,通过改变该下拉菜单说没有包裹(身体或头部)将起作用

最好的解决方案是不要将你的事件处理程序设置为HTML,这是不好的做法,然后你不依赖于全局函数或混合HTML和JS。

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

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

答案 2 :(得分:0)

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

答案 3 :(得分: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

答案 4 :(得分:0)

您可以在此处看到更改:jsfiddle.