【发布时间】:2022-01-26 16:42:57
【问题描述】:
我创建了这个 javascript 函数来检测女巫选项是否被选中,并且根据所选的文本,它应该运行另一个函数。问题是它只适用于第一个“选择”ID。我已经玩了很长时间了,但我仍然无法弄清楚为什么会发生这种情况。
HTML:
<div id="amcdiv" class="vanish">
<label>
<select id="select" onchange="selection();">
<option selected>Típus</option>
<option value="gremlin">Gremlin</option>
</select>
</label>
</div>
<div id="audidiv" class="vanish">
<label>
<select id="select" onchange="selection();">
<option selected>Típus</option>
<option value="s8">S8</option>
<option>RS4</option>
<option>RS7</option>
<option>R8</option>
</select>
</label>
</div>
<div id="bmwdiv" class="vanish">
<label>
<select id="select" onchange="selection();">
<option selected>Típus</option>
<option value="e38">750 e38</option>
<option value="e65">760 e65</option>
<option value="e46">M3 e46</option>
<option value="e92">M3 e92</option>
<option value="m4">M4 2021</option>
<option value="e34">M5 e34</option>
<option value="e39">M5 e39</option>
<option value="e60">M5 e60</option>
<option value="e24">M635 CSi e24</option>
<option value="m8">M8 Competition</option>
</select>
</label>
</div>
JS:
function selection() {
var select = document.getElementById("select").value;
if (select == "e38") {
oktext();
}
if (select == "e65") {
oktext();
}
if (select == "e46") {
goodtext();
}
if (select == "e92") {
oktext();
}
if (select == "e34") {
goodtext();
}
if (select == "e39") {
goodtext();
}
if (select == "e60") {
goodtext();
}
if (select == "m4") {
goodtext();
}
if (select == "m4") {
goodtext();
}
if (select == "gremlin") {
goodtext();
}
if (select == "s8") {
goodtext();
}
}
【问题讨论】:
-
元素 ID 在定义上必须是唯一的。把它们想象成文档中的地址
-
select是 javascript 中的保留关键字 -
传递引用,如
<select onchange="selection(this);">然后function selection(el) { var sel = el.value; ...- 如前所述,尽量不要使用保留关键字,如“select”作为变量 -
select根本不是 JS 中的保留字。 @charlietfl 已经观察到您的问题是重复的 ID。 -
不完全是因为 getElementsByClassName () 返回的集合不是单个元素
标签: javascript html