2010-09-27 187 views
0

我有4个图像,我用作导航菜单,当我点击一个它点亮(改变图像)和电流熄灭,等等。Javascript不工作在Windows上的IE 8

它运作良好,在Chrome和FF(无萤火虫错误)

但在IE8的点击的功能(它改变div的视图)工作,它只是不改变这里的IMG SRC是的代码:

<li id="bulletli1"> 
<a href="#"> 
    <img id="bullethover1" src="img/bulleto.png" height="30px" width="30px" style="position:absolute"> 
<img id="bullet1" name="bullet1" height="30px" width="30px" src="img/bulletwhite.png" onmousedown="this.src='img/bulletwhite.png';document.images['bullet2'].src='img/bullet.png';document.images['bullet3'].src='img/bullet.png';document.images['bullet4'].src='img/bullet.png'" style="opacity:0.4;filter:alpha(opacity=40)"/> 
    </a></li> 

所以基本上会发生什么是内onmousedown事件this.src得到为白色的子弹和所有其他被置暗子弹点。开发人员的工具没有错误。

请问这个src在IE8下不工作吗?任何建议将有助于,谢谢!

回答

1

如果不存在多个具有相同名称/ id-Attribute的图像,请检查。

在这种情况下,IE将采取具有相同名称的图像的最后(请注意,document.images [“somename”]可以是阵列),而其他UserAgents将采取第一一个。 也许在这种情况下,您只会看不到更改,例如,如果更改的图像位于视口之外。

greets

1

你不应该像这样将你的JS嵌入到你的代码中。虽然我建议使用像jQuery这样的库(这会让你的生活更轻松),但我会在没有它的情况下进行解释。

不要将JS嵌入到代码中。如果你真的真的需要,有它调用这样的功能:在脚本标签之间的头部分

<img id="bullet1" name="bullet1" height="30px" width="30px" src="img/bulletwhite.png" onmousedown="bulletClicked()" style="opacity:0.4;filter:alpha(opacity=40)"/>

然后你会遇到你的JavaScript:

function bulletClicked() { 
    this.src='img/bulletwhite.png'; 
    document.images['bullet2'].src='img/bullet.png'; 
    document.images['bullet3'].src='img/bullet.png'; 
    document.images['bullet4'].src='img/bullet.png'; 
} 

从它的外观像你这样做的方式是错误的,你可能会把这个onclikc代码放到每一个子弹图像中,每个子图都会稍微修改一下。相反,如果你只是使用事件,你会简化很多。

如果你做了这样的事情......(并且在一个样式部分中指定了它们的高度,宽度和其他CSS,那么它们属于哪个,不要做你所做的事情,再次)。

​​

然后你的JavaScript可能会...

function bulletClicked(e) { 
    document.images['bullet1'].src='img/bullet.png'; 
    document.images['bullet2'].src='img/bullet.png'; 
    document.images['bullet3'].src='img/bullet.png'; 
    document.images['bullet4'].src='img/bullet.png'; 
    e.src='img/bulletwhite.png'; 
} 

有更好的方法来处理这类问题,我会强烈reccomend你拿起jQuery和做一些工作分离你的页面的HTML,JavaScript和CSS组件。

+0

如果您的代码在IE8中工作,我会礼貌地忽略您的居高临下评论。我在头部尝试了你的第二个函数,并在onmousedown中使用了bulletClicked(this),并且按钮可以工作,但img src不会改变。 – 2010-09-27 19:45:02

+1

居高临下的言论?您将CSS和JS嵌入到HTML元素中。对我来说,没有什么事情可以让你知道这是不好的习惯,这是事实。 – Incognito 2010-09-27 20:00:55

+1

此外,它工作正常,我不知道你的问题是什么。 http://jsfiddle.net/HQsed/ – Incognito 2010-09-27 20:22:05

1

我无法重现所描述的行为。图像似乎被替换成OK。你可以提供什么进一步的细节?当你点击其他3张图片时会发生什么?他们是否直接获取图片网址?