Javascript:超出范围?

时间:2012-03-28 20:31:22

标签: javascript

重新编辑: 我去了W3schools并在那里的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来获取元素的建议,但正如您所看到的,如果您运行此代码,我仍然会在此过程的这一步获得null。从我所看到的和许多建议我正确地做到这一点。我知道我一定错过了什么。有谁能看到它?

2 个答案:

答案 0 :(得分:0)

你的第二个代码块几乎是正确的;您需要使用select元素本身而不是其(不存在的)值:

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

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

如果您有jQuery可用,则可以大幅减少必要的代码量:

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

答案 1 :(得分: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>