簡體   English   中英

如何使用javascript使用select標簽更改div的背景圖像?

[英]How to change background image of div with select tag, using javascript?

我如何使用select標簽更改div的背景圖像,所以當選擇某個選項時,背景會發生變化,這是我的代碼:

<div class="idcard" id="idcard-div"></div>
<div class="select-idcard" id="idcard-select">
        <p>Select Background Image</p>
        <select>
            <option id="idcard-option1" value="blue">Default/Blue</option>
            <option id="idcard-option2" value="red">Red</option>
            <option id="idcard-option3" value="purple">Purple</option>
            <option id="idcard-option4" value="green">Green</option>
        <select>
    </div>

JavaScript代碼:

var changeBgColor = function(){
        var idCardBg = document.getElementById("idcard-div");
        if(document.getElementById("idcard-option1").value === "blue"){
            idCardBg.style.backgroundImage = "url('tigerbg.jpg')";
        }else if(document.getElementById("idcard-option2").value === "red"){
            idCardBg.style.backgroundImage = "url('redbg.jpg')";
        }else if(document.getElementById("idcard-option3").value === "purple"){
            idCardBg.style.backgroundImage = "url('purplebg.jpg')";
        }else if(document.getElementById("idcard-option3").value === "green"){
            idCardBg.style.backgroundImage = "url('greenbg.jpg')";
        }else{
            idCardBg.style.backgroundImage = "url('tigerbg.jpg')";
        }
    };

..

changeBgColor();

您犯了幾個錯誤。

首先,id不匹配,您在div上使用了屬性class而不是id

另外,您應該獲得select元素的值,而不是其選項的值。

最后,您當然必須將事件附加到select元素。 我已經在下面的代碼段中用HTML完成了此操作,但是您也可以使用onchange屬性或addEventListener在JavaScript中完成此操作。

因此,除了一個很好的建議來遵循事件教程之外,我還建議您瀏覽一下瀏覽器中的開發人員工具。 它們包含一個JavaScript控制台,如果運行代碼,該控制台將顯示錯誤。 因此,一旦您附加了該事件,便可以查看控制台以查找其他錯誤。

無論如何,這次我為您做了。 以下是固定的代碼段。 我還使用該值設置背景色,因此您可以粗略地看到它的工作狀態,而無需訪問實際圖像。

 var changeBgColor = function(){ var idCardBg = document.getElementById("idcard"); idCardBg.style.backgroundImage = "url('tigerbg.jpg')"; if(document.getElementById("select-idcard").value === "blue"){ idCardBg.style.backgroundImage = "url('tigerbg.jpg')"; }else if(document.getElementById("select-idcard").value === "red"){ idCardBg.style.backgroundImage = "url('redbg.jpg')"; }else if(document.getElementById("select-idcard").value === "purple"){ idCardBg.style.backgroundImage = "url('purplebg.jpg')"; }else if(document.getElementById("select-idcard").value === "green"){ idCardBg.style.backgroundImage = "url('greenbg.jpg')"; }else{ idCardBg.style.backgroundImage = "url('tigerbg.jpg')"; } idCardBg.style.backgroundColor = document.getElementById("select-idcard").value; }; 
 <div id="idcard"> <p>Select Background Image</p> <select onchange="changeBgColor();" id="select-idcard"> <option id="idcard-option1" value="blue">Default/Blue</option> <option id="idcard-option2" value="red">Red</option> <option id="idcard-option3" value="purple">Purple</option> <option id="idcard-option4" value="green">Green</option> </select> </div> 

HTML更改

<select id="colorSelect" onchange="changeBgColor();">
  <option value="blue">blue</option>
  <option value="red">red</option>
</select>

JS更改(使用select.options數組及其值)

var changeBgColor = function(){
  var idCardBg = document.getElementById("idcard-select");
  var colorSelect = document.getElementById("colorSelect");
  switch (colorSelect.options[colorSelect.selectedIndex].value)
  {
    case 'blue': idCardBg.style.backgroundImage = "url('bluebg.jpg')"; break;
    case 'red': idCardBg.style.backgroundImage = "url('redbg.jpg')"; break;
    default:
      idCardBg.style.backgroundImage = "url('tigerbg.jpg')";
    break;
  }
}

暫無
暫無

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

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