2011-07-13 57 views
1

我是javascript的新手。在選擇JavaScript不與下拉?

我有一個功能,我修改了當用戶從下拉菜單中選擇「是」時,它會在div區域中創建3個文本框。

這裏是我的形式拉低代碼:

<select name="dosage" id="dosage" onchange="function dosage(sel)"> 
      <option value="No">No</option> 
      <option value="Yes">Yes</option> 

    </select> 
<div id="dosagearea"></div> 

這是我修改的JavaScript最初創建一個消息框,給用戶時,他們選擇的東西。

function dosage(sel) 
{ 
    if(sel.options.selectedIndex == 0) 
    { 

     return false; 
    } 


    else if(sel.options.selectedIndex == 'Yes') 
     { 
      x=document.createElement('input'); 
        x.setAttribute('rows',1); 
        x.setAttribute('cols',20); 
        x.name='dosage_emitted'; 
        document.getElementById('dosagearea').appendChild(x); 

      x=document.createElement('input'); 
        x.setAttribute('rows',1); 
        x.setAttribute('cols',20); 
        x.name='dosage_absorbed'; 
        document.getElementById('dosagearea').appendChild(x) 


      x=document.createElement('input'); 
        x.setAttribute('rows',1); 
        x.setAttribute('cols',20); 
        x.name='dosage_period'; 
        document.getElementById('dosagearea').appendChild(x) 
     } 
    } 

我用螢火檢查並恢復沒有JS錯誤,我想我的功能不會被調用的正確方法。

感謝

+0

你也不需要添加行屬性。這對textarea的標籤 – TheBrain

回答

0

Onchange屬性的值基本上是一個函數或一些JavaScript的名稱。如果你想打電話給你的功能與選擇元素作爲參數,你需要做的

<select name="dosage" id="dosage" onchange="dosage(this)"> 

請注意,這不是做的事情,因爲它的夫婦您與您的JS HTML的推薦方式。相反,嘗試在JS直接添加的情況下,像這樣

window.onload = function() { 
    document.getElementById("dosage").onchange = dosage; 
    function dosasage(event) { 
     var sel = event.currentTarget; 
    } 
} 
+0

您好我試過你的建議,但它在Firebug這樣說: 的document.getElementById(「劑量」)的onchange =劑量。 錯誤:document.getElementById(「dosage」)爲空 – Bob

+0

您可能在DOM準備好之前調用JavaScript。嘗試把我提到的代碼放在window.onload函數中。我更新了我的例子。 –

0

嘗試以下操作:onchange="dosage(this)"

+0

謝謝,但現在螢火說錯誤:用量不是一個函數 – Bob

0

最好是已經在HTML中顯示的字段:在輸入或佔位符沒有任何。並在選擇yes時切換顯示:block。此外,您需要更改事件偵聽器的onchange =「劑量(本)」

或使它像這樣

<select name="dosage" id="dosage" onchange="document.getElementById('dosagearea').style.display = this.options.selectedIndex ? 'block' : 'none'"> 
    <option value="No">No</option> 
    <option value="Yes">Yes</option> 
</select> 
<div id="dosagearea" style="display:none"> 
    <input type="text" name="dosage_emitted" /> 
    <input type="text" name="dosage_absorbed" /> 
    <input type="text" name="dosage_period" /> 
</div> 

這裏是行動http://jsfiddle.net/t4cy7/

+0

謝謝,我喜歡你的方式更好,它很簡單,本地化到頁面。 你是贏家! – Bob