我正在使用JavaScript进行一些实验,我有一个水平显示的4个项目列表,每个列表项目都分配了onmouseover
和onmouseout
个事件。
每个项目的onmouseover
事件执行一个函数,该函数使用间隔增加项目的高度。
每个项目的outmouseover
事件执行一个函数,然后使用另一个间隔将项目的高度随时间减少到默认值。
它适用于以下场景:
当我为列表项触发onmouseover
时,高度按预期增加,当我从列表项中取出鼠标时,高度会按预期减少。
问题是,它似乎在以下场景中不起作用:
当我触发列表项的onmouseover
时,高度会按预期增加,但如果我在之前触发另一个列表项的另一个onmouseover
事件,则该项目已恢复为原始大小,上一个列表项的onmouseout
函数没有完成执行。
很抱歉,如果我缺少任何细节,显然我在解释事情方面非常糟糕......所以我有一个源代码链接和一个可以测试代码的网站,看看发生了什么。
也许我没有像我想象的那样有关javascript的知识,所以虽然解决方案或解决方案会很棒,但我也很乐意接受任何建议或某种解释,为什么会发生这种情况。
我最初认为多个间隔定时器无法同时执行,直到经过一些研究后才发现它们可以。所以我现在想的是onmouseover
和onmouseout
事件之间是否存在冲突。
非常感谢任何建议,指导或解决方案!
资源:
https://docs.google.com/open?id=0B6XLOOGyKVdWVkpSUklmMVI5QUk
测试现场:
http://www.play-hookey.com/htmltest/
(只需复制该google文档的内容并粘贴到网站的html文本区域,看看我在说什么)
答案 0 :(得分:3)
您的代码:
icon.onmouseover = function(){ enlarge(this, icon.ID); };
icon.onmouseout = function(){ reduce(this, icon.ID); };
正确的代码:
icon.onmouseover = function(){ enlarge(this, this.ID); };
icon.onmouseout = function(){ reduce(this, this.ID); };
发生了什么:您使用函数绑定了一个事件并将变量传递给它。在每个for循环之后,您重新定义了该函数变量(最后,您的icon.ID = 3)。这意味着所有使用相同icon.ID = 3的事件称为函数。
我希望有意义......