如何在for循环中获取select选项的值
How to get value of select option inside for loop
我有这样的 select 选项:
<select name="color" id="multipleAttr" class="form-control select-2">
<option value="blue">
<option value="red">
</select>
现在为了return这个值和jQuery,我这样做了:
$(".select-2").change(function() {
var val = $(".select-2").val();
console.log(val);
});
它工作正常并正确显示 selected 项目的价值。
但我想通过使用 for 循环使其更加动态:
var counters = 2;
for(i=2;i<=counters;i++){
$(".select-"+i).change(function() {
var val = $(".select-"+i).val();
console.log(val);
});
}
所以它应该是 selecting select-2
class 值并且 return 将其作为 val
。
但它以某种方式打印 undefined。
那么这里出了什么问题?我该如何解决这个问题?
您应该使用在 .change 方法中提供给您的事件,而不是在 .change 回调中再次从 dom 获取元素。
所以你的代码会像
var counters = 2;
for(i=2;i<=counters;i++){
$(".select-"+i).change(function(event) {
var val = event.target.value;
console.log(val);
});
}
就此而言,为什么要遍历 class 带有数字的名称?只需设置一个 class 来表示具有该功能的所有 select 元素,然后根据需要设置 data-attributes 以获得其他信息。
$('.select').change(function() {
let val = $(this).val();
let myName = $(this).data('num');
console.log(`new val is ${val} from ${myName}`);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class='select' data-num='select-1'>
<option selected></option>
<option value='33'>33</option>
</select>
<select class='select' data-num='select-2'>
<option selected></option>
<option value='55'>55</option>
</select>
我有这样的 select 选项:
<select name="color" id="multipleAttr" class="form-control select-2">
<option value="blue">
<option value="red">
</select>
现在为了return这个值和jQuery,我这样做了:
$(".select-2").change(function() {
var val = $(".select-2").val();
console.log(val);
});
它工作正常并正确显示 selected 项目的价值。
但我想通过使用 for 循环使其更加动态:
var counters = 2;
for(i=2;i<=counters;i++){
$(".select-"+i).change(function() {
var val = $(".select-"+i).val();
console.log(val);
});
}
所以它应该是 selecting select-2
class 值并且 return 将其作为 val
。
但它以某种方式打印 undefined。
那么这里出了什么问题?我该如何解决这个问题?
您应该使用在 .change 方法中提供给您的事件,而不是在 .change 回调中再次从 dom 获取元素。
所以你的代码会像
var counters = 2;
for(i=2;i<=counters;i++){
$(".select-"+i).change(function(event) {
var val = event.target.value;
console.log(val);
});
}
就此而言,为什么要遍历 class 带有数字的名称?只需设置一个 class 来表示具有该功能的所有 select 元素,然后根据需要设置 data-attributes 以获得其他信息。
$('.select').change(function() {
let val = $(this).val();
let myName = $(this).data('num');
console.log(`new val is ${val} from ${myName}`);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select class='select' data-num='select-1'>
<option selected></option>
<option value='33'>33</option>
</select>
<select class='select' data-num='select-2'>
<option selected></option>
<option value='55'>55</option>
</select>