2012-07-28 120 views
0

我有以下功能,我想隱藏我的窗體中的一些文本輸入字段。我想要隱藏的所有字段都包含在div'site2'中javascript函數沒有做任何事

<script language="Javascript"> 

function showHide(value) { 
if (value=='yes') { 
     document.getElementById(site2).style.display = "none"; 
     document.getElementById(site2).style.display = "block"; 
     document.add.addSite2Line1.disabled=true; 
    } 
    else if (value=='no') { 
     document.getElementById(site2).style.display = "inline"; 
     document.getElementById(site2).style.display = "none"; 
    } 
} 
} 
    </script> 

並創建一個下拉框。當沒有選擇

<label><span>Single Site?</span><Select name="field" onchange="showHide(this.selectedIndex);"></label> 
<Option value="yes">yes</option> 
<Option value="no">no</option> 
</Select><br /><br /><br /><br /> 

它應該顯示然而,當我運行該頁面沒有任何反應都

+2

刪除多餘的括號你真的確認這是'的getElementById(站點2)'和'沒有的getElementById(「站點2」)'?前者是一個變量名(如果沒有這樣的變量,將返回「undefined」),後者是一個字符串。嘗試'alert(site2)'來查看它包含的值。 – 2012-07-28 05:18:57

+0

您的示例末尾似乎有一個額外的大括號javascript – 2012-07-28 05:26:17

+0

而* label *的結束標記看起來位於錯誤的位置 – 2012-07-28 05:26:51

回答

5

你傳入的selectedIndex,但你檢查它,好像它的價值...試試這個來代替:

<Select name="field" onchange="showHide(this.value);"></label> 

或者嘗試處理之前,從項目獲取的值:

function showHide(selectedIndex) { 
    var value = document.getElementById("field").options[selectedIndex].value; 

    if (value=='yes') { 
     document.getElementById(site2).style.display = "none"; 
     document.getElementById(site2).style.display = "block"; 
     document.add.addSite2Line1.disabled=true; 
    } 
    else if (value=='no') { 
     document.getElementById(site2).style.display = "inline"; 
     document.getElementById(site2).style.display = "none"; 
    } 
} 

Slanec的評論getElementById(site2) vs getElementById("site2")也是有效的。很難說沒有看到你的頁面的其餘部分,但如果你沒有在Javascript中聲明的名爲site2的變量,那麼你可能會收到額外的錯誤。

+0

該值也應該在選擇項上工作:http://stackoverflow.com/questions/5416767/javascript-selected-value – 2012-07-28 05:28:41

+0

我測試了它的值,並得到比選定的索引更多...我得到了其他錯誤,因爲我沒有定義site2,但它進入了if/else塊。 – 2012-07-28 05:30:27

-1

它很簡單,只需要前

function showHide(value) { 
if (value=='yes') { 
     document.getElementById(site2).style.display = "none"; 
     document.getElementById(site2).style.display = "block"; 
     document.add.addSite2Line1.disabled=true; 
    } 
    else if (value=='no') { 
     document.getElementById(site2).style.display = "inline"; 
     document.getElementById(site2).style.display = "none"; 
    } 
} 
+0

由於正在傳入選定的索引,所以這不會起作用,但是函數會檢查值 – 2012-07-28 07:28:45