如何更改图像onclick javascript功能?

时间:2013-08-29 05:11:44

标签: jquery image function onclick onchange

我遇到了问题,我尝试过几次但结果总是一样,我不知道我的代码有什么问题。如果单击右图,它将变为左图,但如果单击左图,则不会更改为右图,为什么? 这是代码:

    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>

我需要这个功能: 单击(右箭头图像),然后它将变为(左箭头图像)并再次单击相同(左箭头图像)将返回默认值(右箭头图像)。

提前感谢您的时间和帮助。

8 个答案:

答案 0 :(得分:4)

正如Prabu在他的回答中解释的那样,实际的src是绝对路径而不是相对路径。

解决这个问题:

  • 将元素对象,即 this 作为参数传递给函数。
  • 在元素对象中创建变量 bln ,即该函数中的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)

DEMO

<强> 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 ......!