2012-05-13 4 views
2

ユーザーが選択した内容に応じてフォームの対応する部分を '表示'する関数を記述する必要があります。たとえば、「Pizza」が選択されている場合、div#section2にピザタイプに関する質問が表示されます。ドロップダウンリスト - オプションをクリックするとdivが表示される

これは、htmlコードIは、オプションのピザをクリックしたとき、それはセクション2に表示されるように、私はjavascript関数を記述しますどのように

<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初心者ですので、どんな助けも素晴らしいでしょう。

答えて

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

もう1つ質問があり、あなたが私を助けることができるかどうか疑問に思っていました。私はまた、どの食品の種類が選択されているかを示すメッセージをJavaScriptコンソールに表示する必要があります。与えられたヒントはconsole.log( "")を使用することです) –

+0

'console.log(select.value);'を関数に追加します。 – iambriansreed

2

解決策はたくさんあります。最も単純なオプションの1つは、マークアップを少し変更してdiv IDを使用することです。

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

私は本当にそれを変更することはできません。これは私がする必要がある実用的なものです。 idは、pizza、mex、thaiのセクション1、セクション2、セクション3のままにする必要があります:/ –

+0

@AnthonyDo更新情報を確認して、JQueryをご覧ください。 – VisioN

+0

@downvoterコメントをお願いします。 – VisioN

関連する問題