2012-05-13 26 views
2

您必須編寫一個函數,根據用戶選擇的內容「顯示」表單的相應部分。例如,如果選擇'比薩',則應該顯示帶有關於比薩類型問題的div#section2。下拉列表 - 單擊選項時顯示div

這是HTML代碼

<form id="survey" action="#" method="post"> 

<div id="section1"> 
    <label for="food">What is your favourite type of food?</label> 
    <select id="food" onchange="selection()"> 
     <option value="pizza">Pizza</option> 
     <option value="mex">Mexican</option> 
     <option value="thai">Thai</option> 
    </select> 
</div> 
<div id="section2"> 
    What is your favourite type of pizza?<br> 
    <label for="hawaiian">Hawaiian</label><input type="radio" id="hawaiian"> 
    <label for="supreme">Supreme</label><input type="radio" id="supreme"> 
    <label for="vegetarian">Vegetarian</label><input type="radio" id="vegetarian"> 
</div> 

我將如何編寫JavaScript函數,這樣,當我點擊選項比薩餅,它會顯示第2節的一部分嗎?我是一個完整的JavaScript新手,所以任何幫助都會很棒。

回答

3

DEMO:http://jsfiddle.net/iambriansreed/rQr6v/

的JavaScript:

var sections = { 
    'pizza': 'section2', 
    'mex': 'section3', 
    'thai': 'section4' 
}; 

var selection = function(select) { 

    for(i in sections) 
     document.getElementById(sections[i]).style.display = "none";  

    document.getElementById(sections[select.value]).style.display = "block"; 

} 

結帳演示。將section3section4 div替換爲實際內容。

+0

非常感謝,演示非常適合查看JavaScript的佈局和Web文檔的外觀。 –

+0

我還有一個問題,並想知道你是否可以幫助我。我還需要在JavaScript控制檯中顯示一條消息,指出選擇了哪種食物類型。給出的一個提示是使用console.log(「」)) –

+0

將'console.log(select.value);'添加到函數中。 – iambriansreed

2

有很多解決方案。其中一個最簡單的選擇是稍微更改標記並使用div標識。

HTML:

<div id="section1"> 
    <label for="food">What is your favourite type of food?</label> 
    <select id="food" onchange="selection(this)"> 
     <option value="pizza">Pizza</option> 
     <option value="mex">Mexican</option> 
     <option value="thai">Thai</option> 
    </select> 
</div> 
<div id="section_pizza" style="display: none;"> 
    What is your favourite type of pizza?<br> 
    <label for="hawaiian">Hawaiian</label><input type="radio" id="hawaiian"> 
    <label for="supreme">Supreme</label><input type="radio" id="supreme"> 
    <label for="vegetarian">Vegetarian</label><input type="radio" id="vegetarian"> 
</div> 

的JavaScript:

function selection(select) { 
    document.getElementById("section_" + select.value).style.display = "block"; 
} 

但是,您可以使用JQuery library,使其更快,更靈活。您可以輕鬆地將動畫添加到塊並添加額外的功能。

HTML:

<div id="section1"> 
    <label for="food">What is your favourite type of food?</label> 
    <select id="food"> 
     <option value="pizza">Pizza</option> 
     <option value="mex">Mexican</option> 
     <option value="thai">Thai</option> 
    </select> 
</div> 
<div id="section2" data-type="pizza" style="display: none;"> 
    What is your favourite type of pizza?<br> 
    <label for="hawaiian">Hawaiian</label><input type="radio" id="hawaiian"> 
    <label for="supreme">Supreme</label><input type="radio" id="supreme"> 
    <label for="vegetarian">Vegetarian</label><input type="radio" id="vegetarian"> 
</div> 

的JavaScript:

$("#food").change(function() { 
    $("[data-type]").hide(); 
    $("[data-type='" + this.value + "']").show(1000); 
}); 
+0

我真的不能改變這一點。這是我需要做的實際操作:s。該ID的需要留在第1節,第2節,第3節的選項披薩,墨西哥和泰國:/ –

+0

@AnthonyDo請檢查後更新並看看JQuery。 – VisioN

+0

@downvoter請提供評論。 – VisioN

相關問題