2014-12-03 95 views
-4

我正在嘗試使用selecth選項下拉列表來更改div的樣式,但我不知道如何去做。以下是我正在處理的簡化版本。可以添加哪些代碼來完成這項工作?如何使用選擇選項更改div的樣式

我正在尋找一個優雅的解決方案,儘可能少的代碼。在這個例子中,除了默認值之外,應該有9種可能的組合。

<div id="change">Some Text</div> 

<select name="font" id="font"> 
<option value="Arial">Arial</option> 
<option value="Tahoma">Tahoma</option> 
<option value="Georgia">Georgia</option> 
</select> 

<select name="foreground" id="foreground"> 
<option value="Red">Red</option> 
<option value="Green">Green</option> 
<option value="Blue">Blue</option> 
</select> 

<select name="background" id="background"> 
<option value="Red">Red</option> 
<option value="Green">Green</option> 
<option value="Blue">Blue</option> 
</select> 
+0

所以,如果選定的選項是宋體,紅色和紅色,你會希望該div顯示? – Bowersbros 2014-12-03 14:02:10

+0

你自己在JavaScript的嘗試在哪裏? – George 2014-12-03 14:02:10

+0

JavaScript是關鍵。你有什麼嘗試過自己? – ummahusla 2014-12-03 14:02:18

回答

0

在這裏,代碼是使用純的JavaScript替代(無jQuery的):

var change = document.getElementById('change'); 

document.getElementById('foreground').addEventListener('change', function(){ 
    change.style.color = this.value; 
}); 

document.getElementById('font').addEventListener('change', function(){ 
    change.style.fontFamily = this.value; 
}); 

document.getElementById('background').addEventListener('change', function(){ 
    change.style.backgroundColor = this.value; 
}); 

退房此codepen

+0

我無法使其在我的網站上工作。標籤需要包含js,並將其放在頭部或身體中(對於我缺乏的知識感到抱歉) – 2014-12-03 14:33:57

+0

@VirtualBloke將整個代碼放入標記中,並在標記關閉之前添加它。如果不起作用,請發佈您的完整代碼,以便我可以看到發生了什麼。 – ianaya89 2014-12-03 14:36:23

+0

謝謝你它的作品和優雅。 – 2014-12-03 14:40:25

-2

首先,我會調整一些東西以後編碼,以簡化...

<select name="font" id="font" class="changeDiv" data-change="font-family"> 
<option value="Arial">Arial</option> 
<option value="Tahoma">Tahoma</option> 
<option value="Georgia">Georgia</option> 
</select> 

<select name="foreground" id="foreground" class="changeDiv" data-change="color"> 
<option value="Red">Red</option> 
<option value="Green">Green</option> 
<option value="Blue">Blue</option> 
</select> 

<select name="background" id="background" class="changeDiv" data-change="background-color"> 
<option value="Red">Red</option> 
<option value="Green">Green</option> 
<option value="Blue">Blue</option> 
</select> 

......現在,你可以連接到班級和處理「變」 ...

$(".changeDiv").on('change', function() { 
    var change = $(this).data("change"); 
    var value = $(this).val(); 
    $("#divToChange").css(change, value); 
}); 

#divToChange應,有些顯然是你想操縱股利。

+0

令人驚訝......誰沒有說任何關於jQuery的東西。它也可以在沒有它的情況下完成,這很容易成爲一個模板。 – rfornal 2014-12-03 14:16:22

0

因爲您沒有將jQuery指定爲標記。這裏是用純JS

<div id="change">Some Text</div> 
<select name="font" id="font" onchange="changeFont(this.value);"> 
    <option value="Arial">Arial</option> 
    <option value="Tahoma">Tahoma</option> 
    <option value="Georgia">Georgia</option> 
</select> 
<select name="foreground" id="foreground" onchange="changeForeground(this.value);"> 
    <option value="Red">Red</option> 
    <option value="Green">Green</option> 
    <option value="Blue">Blue</option> 
</select> 
<select name="background" id="background" onchange="changeBackground(this.value);"> 
    <option value="Red">Red</option> 
    <option value="Green">Green</option> 
    <option value="Blue">Blue</option> 
</select> 
<script> 
    var obj = document.getElementById('change'); 

    function changeFont(val) { 
     obj.style.fontFamily = val; 
    } 

    function changeForeground(val) { 
     obj.style.color = val; 
    } 

    function changeBackground(val) { 
     obj.style.backgroundColor = val; 
    } 
</script> 
1

可以使用jQuery,如果它提供給你:

$(document).ready(function(){ 

    $('#fontList').change(function(){ 
     $('#change').css("font-family", $(this).val());  
    }); 

    $('#foregroundList').change(function(){ 
     $('#change').css('color', $(this).val());  
    }); 

    $('#backgroundList').change(function(){ 
     $('#change').css('background-color', $(this).val());  
    }); 

}); 
+1

@George你不知道JQuery也是Javascript嗎?他想要簡化的解決方案,我給了他一個。 – 2014-12-03 14:17:48

+2

@George我真的很想知道你是怎麼決定自己不能使用JQuery的。這是一個你真正學到東西的網站。我用不同的方法給了他一個答案。使用這個答案是他自己的選擇,而不是你的選擇。這個答案沒有錯,也沒有關係,所以低估了這一點,燃燒我只會讓你感到可悲。 – 2014-12-03 14:24:36

+1

問題是這不是一個JavaScript問題。他甚至不知道關於javascript的傑克蹲位。我說「不要忘記」暗示下面的一段代碼僅適用於JQuery。我知道他會嘗試這個,而不包括圖書館和失敗。我其實關心他。喬治,你的答案在哪裏?你在哪裏幫助他?你所做的只是評論「誰對jQuery有什麼評論?」根據JQuery的答案。 – 2014-12-03 14:42:42

-1

我做的第一個,但其餘的將是相同的。

我添加了一個onchange事件來選擇輸入:

<select name="font" id="font" onchange="change()"> 
<option value="Arial">Arial</option> 
<option value="Tahoma">Tahoma</option> 
<option value="Georgia">Georgia</option> 
</select> 

一個JavaScript函數,改變基於輸入div樣式:

<script> 
function change(){ 
    var change=document.getElementById('change'); 

    var font=document.getElementById('font'); 
    if(font.value == "Arial"){ 
    change.style.font-family= "Arial"; 
    }else if(font.value == "Tahoma"){ 
    change.style.font-family= "Tahoma"; 
    }else if(font.value == "Georgia"){ 
    change.style.font-family= "Georgia"; 
    } 
} 
</script> 
+0

這段代碼有幾個問題:改變和字體是一樣的東西,你不需要通過id檢索字體,你有這個值的參考。另外,if和else不需要,您可以將this.value分配給change屬性。 – ianaya89 2014-12-03 14:27:01

+0

@ ianaya89有一個錯字,我修好了。 – zeee9 2014-12-03 18:11:12

相關問題