2012-05-13 27 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

相关问题