我试图使用jQuery从不同的select标签获取相同名称的值。
以下是HTML
<div class="row">
<div class="col-md-3">
<h1><i class="fa fa-glass" aria-hidden="true"></i></h1>
<select class="form-control SelectWine" id="SelectWine" name="SelectWine[]">
<option value="1">Red</option> <option value="2">Green</option> <option value="3">White</option> </select>
</div>
<div class="col-md-3">
<h1><i class="fa fa-glass" aria-hidden="true"></i></h1>
<select class="form-control SelectWine" id="SelectWine" name="SelectWine[]">
<option value="1">Red</option> <option value="2">Green</option> <option value="3">White</option> </select>
</div>
</div>
以下是我在jQuery中访问的方式:
$('.SelectWine').each(function (index){
var wineId=[];
wineId.push($(this).val());
console.log('Wid',wineId[0]);
console.log('Wid',wineId[1]);
console.log('Wid',wineId[2]);
});
我正在获取控制台日志,如下所示
Wid 1
Wid undefined
Wid undefined
Wid 3
Wid undefined
Wid undefined
我猜每次它都超越了价值。但我需要将每个选择标记的值存储到一个数组中。
注意:第一个选择标签位于默认值(索引1),第二个选择第三个选项(索引3)。
此代码用于获取2或3种不同产品的用户输入并将其存储到cookie中以供进一步使用,但首先我需要将其存储为数组,然后我可以将其存储为cookie中的json数组。
我尝试通过元素的名称进行访问,但它只响应使用id访问。
我试了好几个小时,想不通办法。你的帮助会很棒!!答案 0 :(得分:4)
您需要在循环外声明数组,否则您将在每次迭代中创建一个新数组,并且由于范围而无法在each
回调之外访问它。
var wineId=[];
$('.SelectWine').each(function (index){
//now each iteration will push to same array
....
当您需要生成这样的数组时,您可以使用map()
var windeId = $('.SelectWine').map(function(){
return this.value;
}).get();
答案 1 :(得分:1)
主要问题是你在for each中声明了你的数组,所以它被覆盖了。在循环之外声明它。
此外,与您的问题无关:
https://jsfiddle.net/1ok6ymgf/
var wineId=[];
$('.SelectWine').each(function (index) {
wineId.push(this.value);
console.log('Wid',wineId[0]);
console.log('Wid',wineId[1]);
console.log('Wid',wineId[2]);
});
答案 2 :(得分:0)
让ids变得不同,并使用$('#id_name')
在javascript中调用或使用相同的类名称并使用$('.class_name')