javascript - 为什么它不能识别我的下拉菜单中的无效选择?
问题描述
如果他们决定不使用严格的 vanilla JS 从下拉菜单中选择一个项目,我会尝试向用户显示一条消息。相反,我在控制台中收到一个错误,显示cannot read property 'selectedIndex' of null
. 我看不出我做错了什么。
我该如何解决这个问题?
这是HTML:
<form>
<div>
<label>Drop Down Menu
<select name="menu">
<option value="">---</option>
<option value="item1">Item 1</option>
<option value="item2">Item 2</option>
</select>
</label>
</div>
</form>
这是JS:
var myForm = document.getElementsByTagName("form");
myForm.id = "the-form";
var submitButton = document.getElementsByTagName("button")[1];
submitButton.id = "submit-button";
function formValidation() {
var select = document.getElementsByTagName("select");
select.id = "myMenu";
var selectId = document.getElementById("myMenu");
if(selectId.selectedIndex <= 0) {
console.log("a menu item must be selected!");
}
alert("Chosen!");
}
submitButton.onclick = myForm.onsubmit = function() {
formValidation();
};
解决方案
您在此处通过“myMenu”的 id 定位 DOM 节点:
var selectId = document.getElementById("myMenu");
而您要定位的选择具有 ID“菜单”。因此,您必须更改 JS 选择中的 id 或 html 中选择的 id。
推荐阅读
- swift - 更新选择器 (SwiftUI)
- c++ - 使用Boost插入期间基于类成员参数的排序集
- android - 类型不匹配,必需:(Recyclerview.Adapter
?..Recyclerview.Adapter<*> ,找到:HomeAdapter - javascript - 如何使用打字稿在反应js中添加微调器
- firebase - Firebase 存储规则所有 Firebase 用户还是我帐户中的用户?
- java - 从超类(Lombok 和 Java)自动生成构建器骨架
- tkinter - 使用滚动条放大窗口时展开 tkinter 小部件
- javascript - 有没有办法将 amp 表单数据发送到谷歌电子表格?
- typescript - 打字稿中括号表示法的类型
- c++ - 如何更改地图的内存资源