2010-06-22 34 views
2

我已經嘗試了幾種不同的變體來查找select元素的長度,沒有任何工作!我不明白爲什麼,因爲幾個網站列出這是作爲正確的代碼。使用javascript查找表單select元素的長度

這裏的JavaScript:

<script type="text/javascript"> 
    alert(document.getElementById("opentimes").options.length); 
</script> 

和這裏的形式:

<form action="eateries.php" method="POST" name="filters"> 
     <select name="opentimes" id="opentimes" onChange="document.forms.filters.submit();"> 
      <option value="now">Open Now</option> 
      <option value="tonight">Open Tonight</option> 
      <option value="late">Open Late</option> 
      <option value="whenever">Open Whenever</option> 
     </select> 
....... 
</form> 

我知道警報工作,因爲我已經簡單的字符串進行了測試。我試過像document.filters.opentimes.length和document.forms.filters.opentimes.length變體,但沒有任何作品!

謝謝。

回答

1

你的代碼實際上正在工作,但我猜你的代碼是在DOM加載之前執行的。嘗試此,例如:

<script type="text/javascript"> 
    window.onload = function(){ 
     alert(document.getElementById("opentimes").options.length); 
    }; 
</script> 

裝載在網頁的HTML結構時將被執行,其被包裹在window.onload = function(){ ... };所有代碼。從那一刻起,您可以使用document.getElementById()方法。

此外,您可以將您的代碼移動到文檔的末尾,但我不會建議。它很醜。

+0

ahh是的,這是問題!我實際上有一個函數的警報,但爲了簡單而粘貼它。我在選擇構建之前調用了函數。改變了順序,現在它工作。謝謝! – vee 2010-06-22 19:41:36

1

執行順序。您可能試圖在DOM中存在#opentimes之前。

請嘗試將您的javascript 置於以下<select>(按來源順序)或將其包裝在身體的加載事件中。在行動

<script type="text/javascript"> 
    onload = function() 
    { 
    alert(document.getElementById("opentimes").options.length); 
    } 
</script> 

但要注意

第二個建議 - 你可以,如果其他腳本使用它往往覆蓋「上載」功能等。

+0

感謝您的解決方案! – vee 2010-06-22 19:41:52