我遇到了问题,我尝试过几次但结果总是一样,我不知道我的代码有什么问题。如果单击右图,它将变为左图,但如果单击左图,则不会更改为右图,为什么? 这是代码:
function changeImage() {
if (document.getElementById("changer").src == "imgs/left.gif")
{
document.getElementById("changer").src = "imgs/right.gif";
}
else
{
document.getElementById("changer").src = "imgs/left.gif";
}
}
和图像src代码在这里:
<img src="imgs/right.gif" id="changer" onclick="changeImage()"/></a>
我需要这个功能: 单击(右箭头图像),然后它将变为(左箭头图像)并再次单击相同(左箭头图像)将返回默认值(右箭头图像)。
提前感谢您的时间和帮助。
答案 0 :(得分:4)
正如Prabu在他的回答中解释的那样,实际的src是绝对路径而不是相对路径。
解决这个问题:
element
。 <img src="imgs/right.gif" id="changer" onclick="changeImage(this)" />
^ pass the element object
function changeImage(element) {
element.src = element.bln ? "imgs/right.gif" : "imgs/left.gif";
element.bln = !element.bln; /* assigns opposite boolean value always */
}
上述函数将切换图像src,而不依赖于src
属性中的值。
<强> Sample Fiddle 强>
BTW,您也可以使用CSS:
<强> Working Fiddle 强>
答案 1 :(得分:3)
嘿问题是你提到foldername/filename
但是document.getElementById(“changer”)。src给出fullpath
就像C:\ Users \ ws21 \ Desktop \ imgs \ right.gif
例如
function changeImage() {
//its checking C:\Users\ws21\Desktop\imgs\right.gif=="imgs\left.gif"
if (document.getElementById("changer").src == "imgs/left.gif")
{
document.getElementById("changer").src = "imgs/right.gif";
}
else
{
document.getElementById("changer").src = "imgs/left.gif";
}
}
所以它始终只执行其他部分
答案 2 :(得分:2)
试试这个:
$("#changer").click(function(){
imagePath = $("#changer").attr("src");
if(imagePath == "http://behdasht.co/wp/imgs/left.gif"){
$("#changer").attr("src", "http://behdasht.co/wp/imgs/right.gif");
}else{
$("#changer").attr("src", "http://behdasht.co/wp/imgs/left.gif");
}
});
//Updated to use jquery completely
小提琴:http://jsfiddle.net/8hGWZ/
http://jsfiddle.net/8hGWZ/2/(完整jquery)
答案 3 :(得分:1)
function changeImage() {
var src = document.getElementById("changer").src;
var imgsrc = src.substring(src.lastIndexOf("/")+1);
if (imgsrc == "left.gif")
{
document.getElementById("changer").src = "imgs/right.gif";
console.log('if'+document.getElementById("changer").src);
}
else
{
document.getElementById("changer").src = "imgs/left.gif";
console.log('if'+document.getElementById("changer").src);
}
}
使用上面的工作
<强> FIDDLE DEMO 强>
答案 4 :(得分:0)
你应该得到的工作。
这是一个较短的版本:
function changeImage() {
this.src = this.src == "imgs/left.gif" ? "imgs/right.gif" : "imgs/left.gif";
}
答案 5 :(得分:0)
<强> HTML 强>
<a/>
<img src="imgs/right.gif" id="changer" onclick="changeImage(this)" />
</a>
<强> JS 强>
i=1;
function changeImage(el) {
el.click=++i;
el.src = ((el.click)%2 == 0) ? "imgs/right.gif" : "imgs/left.gif";
}
答案 6 :(得分:0)
嘿尝试javascript中图像的完整路径,如
if (document.getElementById("changer").src == "http://mydomain.com/imgs/left.gif")
{
document.getElementById("changer").src = "http://mydomain.com/imgs/right.gif";
}
有些浏览器在src中使用完整的网址
或者你可以查看
<img src="http://behdasht.co/wp/imgs/right.gif" id="changer" onclick='javascript: this.src = this.src == "http://behdasht.co/wp/imgs/left.gif" ? "http://behdasht.co/wp/imgs/right.gif" : "http://behdasht.co/wp/imgs/left.gif";'/>
答案 7 :(得分:0)
问题得到解决。这里是完整的答案: 我们应该使用图像URL的全部路径,否则它就会工作。
function changeImage() {
if (document.getElementById("changer").src == "HTTP://YOURDOMAIN/left.gif")
{
document.getElementById("changer").src = "HTTP://YOURDOMAIN/right.gif";
}
else
{
document.getElementById("changer").src = "HTTP://YOURDOMAIN/left.gif";
}
}
特别感谢Prabu Parthipan
还有另一种方法:
<img src="imgs/right.gif" id="changer" onclick="changeImage(this)" />
如果我们使用(this),则无需使用图像url的完整路径。 在这种情况下,我应该感谢MR GREEN ......!