Javascript在Windows上无法运行IE 8

时间:2010-09-27 18:27:47

标签: javascript internet-explorer-8 image

我有4个图像用作导航菜单,当我点击它时会点亮(更改图像)并且当前熄灭,依此类推。

它适用于chrome和ff(没有firebug错误)

但是在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设置为白色子弹,所有其他设置为黑暗子弹点。开发人员的工具中没有错误。

this.src在IE8中不起作用吗?任何建议都会有所帮助,谢谢!

3 个答案:

答案 0 :(得分: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,它们属于你所做的事情,再次

<img id="bullet1" name="bullet1" src="img/bulletwhite.png" onmousedown="bulletClicked(this)"/>

那你的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';
}

有更好的方法可以解决这类问题,我非常建议你选择jQuery并做一些工作来分离页面的HTML,JavaScript和CSS组件。

答案 1 :(得分:1)

我无法重现所描述的行为。图像似乎被替换好了。您可以提供任何进一步的细节?点击其他3张图片后会发生什么?他们是否直接获得了他们的图片网址?

答案 2 :(得分:1)

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

在这种情况下,IE会使用相同名称的图像的最后(注意document.images ['somename']可以是一个数组),而其他UserAgents将采用<强>先一。 也许在这种情况下,您只看不到更改,例如,如果更改的图像位于视口之外。

招呼