Iexplorer 9 - jscript - 替换backgroundImage

时间:2011-04-14 12:29:37

标签: javascript cross-browser

我正在使用FF和IE9的js脚本中的下一行。 BackgroundImage设置在某处

url(“images / \\ BalkLinks.png”)

后来我喜欢将那个图像更改为带阴影的图像。

stbmkloon.childNodes[x].style.backgroundImage=stbmkloon.childNodes[x].style.backgroundImage.replace(".png","S.png");

在FF中,IE8运行良好,但在IE9中,/ \\变为斜线前进,一个奇怪的角色和“Bal”被删除。同样“.png”被“S.png”替换为正确的。

是否有人可以告诉我我做错了什么?

的Gr

一个例子:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<SCRIPT LANGUAGE="JavaScript">

function PersoonOpVoorgrond (naam)
{
alert('before :'+document.getElementById(naam).style.backgroundImage);
            document.getElementById(naam).style.backgroundImage=document.getElementById(naam).style.backgroundImage.replace(/.png/,"S.png");
alert('after :'+document.getElementById(naam).style.backgroundImage);

}
</SCRIPT>


</head>

<body>
    <div id="Switch" onclick="PersoonOpVoorgrond('Switch');" style="background-image:url(images/\\BalkLinks.png); background-position:0% 0%; background-repeat: no-repeat; border:2px black solid; width:50px;">
        Switch
    </div>
</body>
</html>

1 个答案:

答案 0 :(得分:1)

您应该在替换函数中使用正则表达式。

backgroundImage.replace(/.png/g,"S.png");

还有一件事是危险的: 并非所有浏览器都返回样式属性的当前值。例如,chrome将为“style.backgroundImage”返回一个空字符串。

Chrome仅返回之前由JavaScript指定的值。