0

早期此代码工作正常。但不知道突然停止工作..更改代码位置后。

give error :  
- Uncaught TypeError: Cannot read property 'options' of undefined (in chrome)
- no element found (in firefox)

var inputs = document.getElementsByTagName("select"); //get array of select tag

var sSrnti = inputs[0].options[inputs[0].selectedIndex].value; //get selected value of first list

var sType = inputs[1].options[inputs[1].selectedIndex].value;//get selected value of second list

var sStatus = inputs[2].options[inputs[2].selectedIndex].value;//get selected value of third list

请帮助我..谢谢

4

3 回答 3

0

您的 HTML中至少没有三个select元素,或者您的 JavaScript 在 DOM 加载之前触发。

尝试以下...

<script type="text/javascript">
   window.onload = function() {
    // Your JavaScript here...
   }
</script>
于 2013-09-30T08:31:30.383 回答
0

如果您有一个如下所示的选择元素:

<select id="ddlViewBy">
<option value="1">test1</option>
<option value="2" selected="selected">test2</option>
<option value="3">test3</option>
</select>

运行此代码:

var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].value;

将使 strUser 为 2。如果您真正想要的是 test2,请执行以下操作:

var e = document.getElementById("ddlViewBy");
var strUser = e.options[e.selectedIndex].text;
于 2013-09-30T08:29:01.313 回答
0

我不明白你的意思

"after changing location for code"

你应该更清楚这一点。但正如上面 kippie 评论的那样,您很可能已将调用您的 js 文件的脚本标签移到了 html 之上。这是html的推荐布局

<!DOCTYPE html>
<html>
    <head>
        <title>some title</title>
        <!-- add all refs to css files here taking note of the cascading property of css-->
        <link href="..." rel="stylesheet">
    </head>

    <body>

    </body>
    <!-- add all calls to js files here, so you can be sure dom is loaded-->
    <script src="somefile.js"></script>
</html>

如果您已完成此操作并且问题仍然存在,请告诉我您移动了哪些代码以及将其移动到了哪里。您还可以使用 chrome 控制台尝试获取代码。例如

press control + shift + j on your keyboard

并使用相同的命令,例如 document.getElementByID('#id') 来查看是否可行,然后我们可以看到问题所在。

祝你好运。

于 2013-09-30T08:42:52.127 回答