JS元素样式切换

时间:2010-09-26 16:06:59

标签: javascript html

我需要在每次点击时在两个图像之间切换元素背景图像。

我有这个,但它只切换了两次颜色= \

<html>
<head>
    <title>Javascript Change Div Background Image</title>

    <style type="text/css">

    #div1 {
    width:100px;
    height:30px;
    background-image:url(blue.png);
    }


    </style>

    <script language="javascript" type="text/javascript">
        function changeDivImage() {
            var imgPath = new String();
            imgPath = document.getElementById("div1").style.backgroundImage;

            if (imgPath == "url(blue.png)" || imgPath == "") {
                document.getElementById("div1").style.backgroundImage = "url(green.png)";
            }
            else {
                document.getElementById("div1").style.backgroundImage = "url(blue.png)";
            }
        }
    </script>

</head>

<body>

    <center>
    <p>
        This Javascript Example will change the background image of<br />
        HTML Div Tag onclick event.
    </p>
    <div id="div1">
    </div>
    <br />
    <input type="button" value="Change Background Image" onclick="changeDivImage()" />
    </center>

</body>
</html>

3 个答案:

答案 0 :(得分:3)

某些浏览器可能会为您提供图像的绝对路径,而不是您提供的相对路径。

而不是==,测试网址的indexOf()位置。

示例: http://jsfiddle.net/7Rp2G/2/ (多次点击按钮查看网址更改)

function changeDivImage() {
    var imgPath = new String();
    var div = document.getElementById("div1");
    imgPath = div.style.backgroundImage;

    div.style.backgroundImage = (imgPath.indexOf("blue.png") > -1 || imgPath == "") 
                              ? "url(green.png)" 
                              : "url(blue.png)";

}​

编辑:已更新,将if()替换为三元组。

答案 1 :(得分:1)

以下代码应该处理它。

var current_bg = 'green';

function changeDivImage()
{

    if(current_bg == 'green')
    {

        current_bg = 'blue';

    }
    else
    {

        current_bg = 'green';

    }

    document.getElementById("div1").style.backgroundImage = "url('"+current_bg+".png')";

}

答案 2 :(得分:0)

您可能需要引用网址,即

backgroundImage = "url('blue.png')" 

我猜想浏览器现在正在为你做这件事,这使得比较失败了。猜测..更稳定的解决方案可能是维护变量以跟踪当前背景图像,而不是比较css属性中的字符串。