【发布时间】:2011-10-10 05:06:21
【问题描述】:
我想使用图像制作菜单列表。每个菜单有两个图像(filename.jpg & filename_active.jpg)。每次我把鼠标放在它的图像上,图像就会变成另一个。它在 Firefox 和 chrome 中运行良好,但在 IE 7 及更低版本中存在问题。 问题是,javascript 只会读取最后一部分(在这种情况下,他只会读取第三个菜单)。 我将在下面显示的代码只是 IE 中 javascript 代码的一部分。 让我展示我的代码:
HTML:
<ul>
<li class="caresoul_menu active" id="menuli_first"><a href="first.php"><img src="img_first_active.jpg" /></a></li>
<li class="caresoul_menu" id="menuli_two"><a href="two.php"><img src="img_two.jpg" /></a></li>
<li class="caresoul_menu" id="menuli_three"><a href="three.php"><img src="img_three.jpg" /></a></li>
Javascript:
var caresoul_menu = Dom.getElementsByClassName('caresoul_menu', 'li');
if(caresoul_menu.length > 0) {
for(var im in caresoul_menu) {
if (caresoul_menu[im].attachEvent) {
caresoul_menu[im].attachEvent('onmouseover', function(){
var liId = caresoul_menu[im].getAttribute('id').split('menuli_')[1];
caresoul_menu[im].firstChild.firstChild.setAttribute('src','/image/'+liId+'_active.png');
})
}
}
}
【问题讨论】:
-
为什么不使用 Prototype 或 jQuery 之类的东西?
-
您正在使用已完成的迭代循环的迭代变量 (
im)。由于附加到列表Element的Function并不总是使用相同的值,因此您只会对最后一个元素产生所需的效果。
标签: javascript events listener