我需要在每次点击时在两个图像之间切换元素背景图像。
我有这个,但它只切换了两次颜色= \
<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>
答案 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属性中的字符串。