我正在学习Javascript和jQuery,在下面的示例代码中遇到了一个问题,我似乎无法找出其原因。我试图编写一个脚本,使第二个下拉菜单反映第一个下拉菜单中选择的选项。
我很好奇为什么我的当前代码似乎只针对每两个选择选项中的一个。由于我是新学习Javascript / jQuery的人,如果这是一个显而易见的答案,我很抱歉,但我真的很希望有人能解释一下为什么这段代码只针对我的一半选择选项,而不是所有选择选项,以及如何修复它,这样我就可以从这个错误中学习。
此外,这里还有相同代码的JSFiddle。 https://jsfiddle.net/2xnmr0pa/1/
我很好奇为什么我的当前代码似乎只针对每两个选择选项中的一个。由于我是新学习Javascript / jQuery的人,如果这是一个显而易见的答案,我很抱歉,但我真的很希望有人能解释一下为什么这段代码只针对我的一半选择选项,而不是所有选择选项,以及如何修复它,这样我就可以从这个错误中学习。
<style>
#sweets {
color: red;
}
</style>
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<select id="sweets" >
<option value="Chocolate">Chocolate</option>
<option value="Candy">Candy</option>
<option value="Taffy">Taffy</option>
<option value="Caramel">Caramel</option>
<option value="Fudge">Fudge</option>
<option value="Cookie">Cookie</option>
</select>
<select id="target">
<option value="Chocolate">Chocolate</option>
<option value="Candy">Candy</option>
<option value="Taffy">Taffy</option>
<option value="Caramel">Caramel</option>
<option value="Fudge">Fudge</option>
<option value="Cookie">Cookie</option>
</select>
<script>
$( "#sweets" )
.change(function () {
var str = "";
$( "option:selected" ).each(function() {
str += $( this ).val();
});
$( "#target" ).val( str );
})
.change();
</script>
此外,这里还有相同代码的JSFiddle。 https://jsfiddle.net/2xnmr0pa/1/
$( "option:selected" ).each
的作用:它遍历了所有被选中的选项,即使它们在不同的select
列表中。因此,你试图设置的值是像"TaffyCandy"
而不是"Taffy"
这样的东西。这样的值并不存在。只有当选择了 两个 选项时,该值才始终为两个值。 - Sebastian Simonconsole.log
并使用浏览器控制台调试代码,以自行查找代码中的意外行为。 - Sebastian Simon