我有一个在页面上重复30次的下拉列表。我创建了一个应该处理value
的函数,但是每次我在浏览器中单步执行时,变量总是null
。
我正在调用我的select
:onchange="showDropDown(capability_4_1_b,this.value)"
我的职能:
function showDropDown(id,value) {
var nc = document.getElementById(id);
if (value === "NC" || value === "OBS") {
nc.style.display = 'block';
} else {
nc.style.display = 'none';
}
}
我定位的div是<div id="capability_4_1_b" style="display:none;">
我查看了源代码,元素在DOM
我的JS文件位于页面底部。
上面的函数是我开始执行functions
的方法,但我希望用一个函数来实现。这些功能有效,但重复次数过多:)。
答案 0 :(得分:2)
capability_4_1_b
是一个变量。浏览器将其解析为Element对象。然后,JavaScript将其转换为字符串,然后尝试查找具有与其匹配的ID的元素。
您需要传递一个字符串。
onchange="showDropDown("capability_4_1_b",this.value)"
答案 1 :(得分:1)
onchange="showDropDown(capability_4_1_b,this.value)"
您没有引用capability_4_1_b
,因此无效。
onchange="showDropDown('capability_4_1_b',this.value)"
答案 2 :(得分:0)
您需要传递一个实际字符串:
onchange="showDropDown('capability_4_1_b', this.value)"
^ ^
否则,您实际上是passing the element itself,这就是您没有收到错误的原因。
答案 3 :(得分:0)
只需修改
中的onchange方法调用即可<强>平变化= “showDropDown(capability_4_1_b,THIS.VALUE)”强>
要
<强>平变化= 'showDropDown( “capability_4_1_b”,THIS.VALUE)'强>
您传递的id应该是字符串格式,因此需要用双引号写。