我的表单中有3个下拉列表。我想将每个下拉列表中的选定值显示给我的标签。问题是只会显示一个保管箱列表,而其他两个则不会显示。
这是我的代码:
<script>
window.onload = function()
{
document.getElementsByName('mydropdown')[0].onchange = function(e)
{
document.getElementById('mylabel').innerHTML = this.value;
};
}
</script>
this is my html
<td><select name="mydropdown" id="mydrop" onchange="">
<option value="none" selected="selected"></option>
<option value="17.50">6M</option>
<option value="25.00">12M</option>
</select>
</td>
<td><label id="mylabel"></label></td>
<td><select name="mydropdown" id="mydrop">
<option value="none" selected="selected">Length </option>
<option value="0.0455">DS516HO</option>
<option value="0.0559">DS520HO</option>
<option value="0.0780">DS516HWR</option>
<option value="0.0200">DS312WH</option>
<option value="0.0624">DS520WH</option>
<option value="0.0361">DS525FH</option>
<option value="0.1170">DS620HW</option>
<option value="0.1340">DS550HW</option>
<option value="0.1340">TD525HW</option>
<option value="0.1820">DS650HW</option>
<option value="0.2340">TD665HWR</option>
</select>
<td><label id="mylabel"></label></td>
答案 0 :(得分:1)
更新:工作示例:http://jsfiddle.net/x8Rdd/1/
那是因为你只为“mydropdown”组中的第一个元素设置了onchange事件。
<script>
window.onload = function()
{
var dd = document.getElementsByName('mydropdown');
for (var i = 0; i < dd.length; i++) {
dd[i].onchange = function(e)
{
document.getElementById('mylabel').innerHTML = this.value;
};
}
}
</script>
或类似的东西。如果您正在使用jQuery,那么您可以在没有循环的情况下为所有这些设置onchange属性。
答案 1 :(得分:1)
您只是将第0个元素(您选择的元素)与[0]
绑定在一起。你需要绑定到所有这些,可能是这样的:
Array.prototype.forEach.call(document.getElementsByName('mydropdown'),
function (elem) {
elem.addEventListener('change', function() {
document.getElementById('mylabel').innerHTML = this.value;
});
});
顺便说一句,您在多个无效的元素上重复使用相同的ID。