2012-03-28 220 views
0

重新編輯: 我去了W3schools,並在那裏玩javascript編輯器窗口,看看發生了什麼。這是一個較短的腳本。Javascript:超出範圍?

<html> 
<body> 
<script type="text/javascript"> 
var eType = document.getElementById("Type") 
</script> 
<select class="field select addr" id="Type"> 
     <option value="Type:L" selected="selected">Location</option> 
     <option value="Type:C">Corporate</option> 
     <option value="Type:R">Remittama</option> 
     <option value="Type:M">Mailing</option> 
     </select> 
<script type="text/javascript"> 
document.write(eType); 
</script> 
</body> 
</html> 

我做了什麼ThiefMaster建議如何通過不使用的.text或.value的獲得元素,但你可以看到,如果你運行該代碼,我仍然在過程的這一步驟得到一個空。從我能看到的和許多建議我正確地做到這一點。我知道我必須失去一些東西。任何人都可以看到它?

+0

在文檔加載完成後,您不希望使用'document.write()'。我建議添加隱藏的輸入作爲你的初始標記的一部分,並從JS中設置它的值。或者使用['.createElement()'](https://developer.mozilla.org/en/DOM/document.createElement)。 – nnnnnn 2012-03-28 21:18:30

+0

w3schools不是那麼好。檢查http://w3fools.com/ – DwB 2012-03-29 17:53:12

回答

0

您試圖在實際將其放到頁面上之前獲取該元素。修復順序,並且不要使用document.write。

<html> 
<body> 

<select class="field select addr" id="Type"> 
     <option value="Type:L" selected="selected">Location</option> 
     <option value="Type:C">Corporate</option> 
     <option value="Type:R">Remittama</option> 
     <option value="Type:M">Mailing</option> 
     </select> 
<script type="text/javascript"> 
var eType = document.getElementById("Type") 
document.body.appendChild(document.createTextNode(eType)); 
</script> 
</body> 
</html> 
0

你的第二個代碼塊幾乎是正確的;您需要使用select元素本身,而不是它的(不存在)值:

var elem = document.getElementById("Type"); 
var type = elem.options[elem.selectedIndex].value; 

演示:http://jsfiddle.net/ThiefMaster/nw3nN/

如果你有jQuery可用,你可以大大減少代碼所需的量:

var type = $('#Type').val();