【问题标题】:how to change image onclick javascript function?如何更改图像 onclick javascript 功能?
【发布时间】:2013-08-29 05:11:44
【问题描述】:

我遇到了一个问题,我尝试了几次但结果总是一样,我不知道我的代码有什么问题。点击右图会变成左图,点击左图不会变成右图,这是为什么呢? 这是代码:

    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>

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

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

【问题讨论】:

  • 唯一需要做的改变是检查 src 是否包含“imgs/left.gif” > 'if(document.getElementById('changer').src.indexOf(' imgs/left.png') != -1)'。这应该可以正常工作。

标签: jquery image function onclick onchange


【解决方案1】:

正如 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

顺便说一句,您也可以只使用 CSS:

Working Fiddle

【讨论】:

  • 非常感谢您的帖子。我更新了我的答案.. 问候
  • @Amin 您正在发布我们向您展示的答案。相反,您应该将帖子标记为答案。
【解决方案2】:

嘿,问题是你提到了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";
        }

    }

所以它总是只执行 else 部分

【讨论】:

  • 你的代码和我上面的代码一样,右箭头会变成左箭头,但左箭头不会变成默认(右箭头)在这里检查(behdasht.co/wp/new.php
  • 嘿,我解释得很清楚。如果条件下它使用完整路径检查,如 C:\Users\ws21\Desktop\imgs\right.gif 等于 imgs\left.gif.so 它总是执行 else part.initially你给了“imgs/right.gif”所以改为imgs/left.gif
  • 你还有什么疑问吗?
  • 嘿,你是对的,现在解决了。。谢谢你的分享。我应该使用完整路径.. 非常感谢.. 问题已解决。
【解决方案3】:

试试这个:

$("#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)

【讨论】:

  • 这里有问题,您的代码运行良好,但在我的页面中无法运行 (behdasht.co/wp/new.php)
  • @Amin :检查更新的源代码。这对你有用。干杯
  • 我告诉过你,它还是一样的,这个代码单独工作,但不在这个页面中。你可以再检查一次。谢谢
  • @Amin,你能清除缓存吗,因为在你的网站中,图像更改对我有用.. :(
  • @Amin 接受或投票赞成您发现对您有帮助的答案..:).. 干杯
【解决方案4】:
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

【讨论】:

  • 我首先不鼓励使用内联 JS
  • 我做到了,但还是一样,我的意思是,右箭头会变成左箭头,没关系,但改变的左箭头图像不会变成默认值..
  • 最后我们找到了一个可以在这个页面上工作的代码,但是你能告诉我你的代码中的这些错误是什么吗?消息:'console' is undefined Line: 116 and Line Line: 111
【解决方案5】:

你所拥有的应该可以工作。

这是一个较短的版本:

function changeImage() {
    this.src = this.src == "imgs/left.gif" ? "imgs/right.gif" : "imgs/left.gif";
}

【讨论】:

【解决方案6】:

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";
}

【讨论】:

  • 您的代码运行良好,但是当我使用您的代码时,我的页面无法正常工作,您的代码只是在没有其他代码的情况下工作。这是页面:(behdasht.co/wp/new.php
【解决方案7】:

嘿,试试 javascript 中图片的完整路径,比如

if  (document.getElementById("changer").src == "http://mydomain.com/imgs/left.gif")
{
    document.getElementById("changer").src = "http://mydomain.com/imgs/right.gif";
}

有些浏览器在src中使用完整的url

或者你可以检查一下

  <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";'/>

【讨论】:

  • 你可以通过这个链接查看:(behdasht.co/wp/new.php) 还是一样,我真的很累解决这个问题。
  • 现在我编辑了。您可以尝试 onclick 函数本身内的脚本。这是changeImage函数的参考问题。立即尝试编辑的部分
  • 抱歉现在试试,我改成你需要的了
【解决方案8】:

问题已解决。这是完整的答案: 我们应该使用图片 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 ...!

【讨论】:

  • 您再次与图像路径进行比较。不要依赖图像路径来进行简单的切换。始终首选使用相对路径。再次检查我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-05
  • 2022-01-06
  • 1970-01-01
  • 1970-01-01
  • 2018-01-11
  • 2011-09-18
  • 1970-01-01
相关资源
最近更新 更多