2

我正在尝试src使用 Javascript 更改 HTML 图像。我有两张图片 Plus.gif 和 Minus.gif。我已经插入了 HTMLimg标签并编写了一个 Javascript 函数来src在单击时更改图像。

问题是当用户单击图像时我想再次将其更改回来。例如,当页面加载Plus.gif显示时,当用户单击它时,它会更改为Minus.gif.

我想要它,当图像是Minus.gif并且用户单击它时,它应该更改为Plus.gif.

这是我的 Javascript 函数:

<script language="javascript" type="text/javascript">
  function chngimg() {
    var img = document.getElementById('imgplus').src; //= 'Images/Minus.gif';

    if (img) {
      document.getElementById('imgplus').src = 'Images/Minus.gif';
    } else if (!img) {
      document.getElementById('imgplus').src = 'Images/Plus.gif';
      alert(img);
    }

  }
</script>

图片标签:

<img id="imgplus" alt="" src="Images/Plus.gif" onmouseover="this.style.cursor='pointer'" onclick="chngimg()"   />
4

3 回答 3

13

查看我为使其正常工作所做的更改

<script language="javascript" type="text/javascript">
    function chngimg() {
        var img = document.getElementById('imgplus').src;
        if (img.indexOf('Plus.gif')!=-1) {
            document.getElementById('imgplus').src  = 'Images/Minus.gif';
        }
         else {
           document.getElementById('imgplus').src = 'Images/Plus.gif';
       }

    }
</script>

<img id="imgplus" alt="" src="Images/Plus.gif" onmouseover="this.style.cursor='pointer'" onclick="chngimg()"   />

希望能解决您的问题。

于 2012-09-01T07:42:29.247 回答
4

一种方法是在您的函数中添加一个切换变量:

var toggle = false;
function chngimg() {
    if (toggle === true) {
        document.getElementById('imgplus').src  = 'Images/Minus.gif';
    } else {
       document.getElementById('imgplus').src = 'Images/Plus.gif';
       alert(img); 
    }
    toggle = !toggle; 
}

请注意,对这种事情使用精灵是一种更好的做法。如果你使用两张图片,用户体验会很笨拙,因为他们第一次点击图片时,第二张图片加载时会有一点延迟。

理想情况下,您会将这两个图像作为精灵表,并使用 JQuery。然后你可以这样做。

HTML

<img id="imgplus" src="Images/Sprite.gif" onclick="chngimg()" />

CSS

#imgplus .clicked { background-position: 0 -30px; }

Javascript

function chngimg() {
    $("#imgplus").toggleClass("clicked");
}
于 2012-09-01T07:34:51.320 回答
3

我已经在纯 JS 中成功使用了这个通用解决方案来解决切换 img url 的问题:

function toggleImg() {
  let initialImg = document.getElementById("img-toggle").src;
  let srcTest = initialImg.includes('initial/img/url');
  let newImg = {
    'true':'second/img/url', 
    'false':'initial/img/url'}[srcTest];

  return newImg;
}

然后在您使用的任何事件处理程序中调用 toggleImg()....

someButton.addEventListener("click", function() {
  document.getElementById("img-toggle").src = toggleImg();
}
于 2017-08-02T04:12:31.230 回答