从选择框中获取选定的值不起作用

时间:2013-02-06 16:42:01

标签: javascript html

我创建了一个函数,在点击时使用来自另一个选择框的值填充一个选择框,它对我系统中的大多数选择框都很有效,但我现在正在努力解决这个问题lol:

用于测试所选值的功能,并在找到时发出警报:

function updateSelectBox(parent, child){
    for(i = 0; i < document.getElementById(parent).length; i++){
        if(document.getElementById(parent).options[i].selected){
            alert(document.getElementById(parent).options[i].value);
    }
}

选择此选项时不会发出警报:

<input type="hidden" name="data[Series][3][Profession][Profession]" value="" id="Professions3_">
<select name="data[Series][3][Profession][Profession][]" multiple="multiple" id="Professions3" onchange="updateSelectBox("Professions3", "Specialisms3");">
<option value="24">Scientist</option>

并且在选择时会发出警报:

<input type="hidden" name="data[Series][4][Profession][Profession]" value="" id="Professions4_">
<select name="data[Series][4][Profession][Profession][]" multiple="multiple" id="Professions4" onchange="updateSelectBox("Professions4", "Specialisms4");">
<option value="24">Scientist</option>

这是来自不同选择框的完整html输出,也是工作

<div class="input select"><label for="Zones">Zones</label><input type="hidden" name="data[Series][0][Zone][Zone]" value="" id="Zones_">
<select name="data[Series][0][Zone][Zone][]" multiple="multiple" id="Zones" onchange="updateSelectBox(&quot;Zones&quot;, &quot;Countries&quot;);">
<option value="4">Europe</option>
</select>
</div>

1 个答案:

答案 0 :(得分:0)

这不起作用。即使它适用于您的页面,您帖子中的代码也无法正常工作:您的JavaScript缺少结束括号,您在双引号内使用双引号的HTLM,没有人能够运行它。所以,让我们退后一步,将其重写为肯定会起作用的东西:

HTML

<select onchange="updateSelectBox(this);">
  <option value="0">Scientist 1</option>
  <option value="12">Scientist 2</option>
  <option value="24">Scientist 3</option>
</select>

JS

function updateSelectBox(selectBox) {
  var sid = selectBox.selectedIndex;
  var selectedOption = selectBox.children[sid];
  console.log(selectedOption);
}

现在我们至少可以使用我们可以构建的最少量的代码来实现我们所知道的工作。我建议使用它来构建你现在拥有的HTML和函数。例如,你肯定需要停止使用这么多的字符串和查找。特别是信任字符串没有拼写错误会破坏你的一天(你有一个名为'Professions3_'的输入和一个名为'Professions3'的选择......这只是要求麻烦)