簡體   English   中英

單擊按鈕更改圖像

[英]Change image in button on click

我有一個帶有圖像的按鈕,我想在點擊時交換。 我得到了那部分工作,但現在我還希望它再次點擊時更改回原始圖像。

我正在使用的代碼:

<button onClick="action();">click me<img src="images/image1.png" width="16px" id="ImageButton1"></button>

和Javascript:

function action() {
  swapImage('images/image2.png');
};

var swapImage = function(src) {
  document.getElementById("ImageButton1").src = src;
}

提前致謝!

雖然您可以使用全局變量,但您不需要。 使用setAttribute / getAttribute時,添加在HTML中顯示為attrib的內容。 您還需要注意,添加全局只是將變量添加到窗口或導航器或文檔對象(我不記得哪個)。

您還可以將其添加到對象本身(即,如果查看html,則該變量不可見,但如果您將html元素視為調試器中的對象並查看其屬性,則該變量可見。)

這是兩種選擇。 1以一種使其在html中可見的方式存儲替代圖像,另一種不存在。

<!DOCTYPE html>
<html>
<head>
<script>
function byId(e){return document.getElementById(e);}

window.addEventListener('load', mInit, false);

function mInit()
{
    var tgt = byId('ImageButton1');
    tgt.secondSource = 'images/image2.png';
}

function byId(e){return document.getElementById(e);}

function action() 
{
    var tgt = byId('ImageButton1');
    var tmp = tgt.src;
    tgt.src = tgt.secondSource;
    tgt.secondSource = tmp;
};

function action2()
{
    var tgt = byId('imgBtn1');
    var tmp = tgt.src;
    tgt.src = tgt.getAttribute('src2');
    tgt.setAttribute('src2', tmp);
}
</script>
<style>
</style>
</head>
<body>
    <button onClick="action();">click me<img src="images/image1.png" width="16px" id="ImageButton1"></button>
    <br>
    <button onClick="action2();">click me<img id='imgBtn1' src="images/image1.png" src2='images/image2.png' width="16px"></button>
    </body>
</html>

您需要將舊值存儲在全局變量中。

例如:

var globalVarPreviousImgSrc;
var swapImage = function(src)
{
   var imgBut = document.getElementById("ImageButton1");

   globalVarPreviousImgSrc = imgBut.src;
   imgBut.src = src;
}

然后在action方法中,您可以檢查它是否等於舊值

function action()
{
  if(globalVarPreviousImgSrc != 'images/image2.png')
  {
    swapImage('images/image2.png');
  }else{
    swapImage(globalVarPreviousImgSrc);
  }
}

檢查一個工作示例,只需復制粘貼並運行 -

HTML

<button onClick="action();">click me<img src="http://dummyimage.com/200x200/000000/fff.gif&text=Image+1" width="200px" id="ImageButton1"></button>

JAVASCRIPT

<script>
function action()
{
if(document.getElementById("ImageButton1").src == 'http://dummyimage.com/200x200/000000/fff.gif&text=Image+1' )
document.getElementById("ImageButton1").src = 'http://dummyimage.com/200x200/dec4ce/fff.gif&text=Image+2';
else
document.getElementById("ImageButton1").src = 'http://dummyimage.com/200x200/000000/fff.gif&text=Image+1';
}
</script>

查看這個工作示例 - http://jsfiddle.net/QVRUG/4/

在javascripts中使用全局變量使用閉包或對象文字並不是一個好主意。 你可以做一些像使用閉包的東西

(function(){
  var clickCounter = 0;
  var imgSrc1 = "src to first image";
  var imgSrc2 = "src to second image"
  functions swapImage (src)
  {
   var imgBut = document.getElementById("ImageButton1");
   imgBut.src = src;
  }

  function action()
  {
  if(clickCounter === 1)
  {
    swapImage(imgSrc1);
    --clickCounter;
  }else{
    swapImage(imgSrc2);
    ++clickCounter;
  }
}
})();

(雖然我沒有運行此代碼)

這個不錯的w3文檔為您提供了最佳實踐。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM