Javascript jQuery:从同名的不同select标记获取值
我试图使用jQuery从具有相同名称的不同select标记中获取值 下面是HTMLJavascript jQuery:从同名的不同select标记获取值,javascript,jquery,html,cookies,Javascript,Jquery,Html,Cookies,我试图使用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"
<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>
我得到的控制台日志如下
Wid 1
Wid undefined
Wid undefined
Wid 3
Wid undefined
Wid undefined
我猜每次它都会覆盖这个值。但是我需要将每个select标记的值存储到一个数组中
注意:第一个select标记位于defaultindex 1中,第二个是我在第三个optionindex 3中选择的
此代码用于获取用户对2或3种不同产品的输入,并将其存储到cookie中以供进一步使用,但首先我需要将其存储为数组,然后才能将其存储为cookie中的json数组
我尝试通过元素的名称进行访问,但它仅对使用id进行访问作出响应
我试了好几个小时,想不出办法。你的帮助将是巨大的 让id不同并使用$'id\u name'调用javascript,或者让类名相同并使用$'调用javascript。class\u name'让id不同并使用$'id\u name'调用javascript,或者让类名相同并使用$'调用javascript。class\u name'您需要在循环外部声明数组,否则,您将在每次迭代中创建一个新数组,并且由于作用域的原因,无法在每次回调之外访问它
var wineId=[];
$('.SelectWine').each(function (index){
//now each iteration will push to same array
....
当需要生成这样的数组时,可以使用
您需要在循环之外声明数组,否则您将在每次迭代中创建一个新数组,并且由于作用域的原因,无法在每次回调之外访问它
var wineId=[];
$('.SelectWine').each(function (index){
//now each iteration will push to same array
....
当需要生成这样的数组时,可以使用
主要的问题是,您在for each中声明了数组,因此它会被覆盖。在循环之外声明它 此外,与您的问题无关: 您的select元素具有相同的名称和id。它们可以而且应该共享类名,但不共享元素名称和id。 您可以只使用'this.value'而不是'$this.val'。尽可能避免不必要地使用jQuery将提高性能。
主要的问题是,您在for each中声明了数组,因此它会被覆盖。在循环之外声明它 此外,与您的问题无关: 您的select元素具有相同的名称和id。它们可以而且应该共享类名,但不共享元素名称和id。 您可以只使用'this.value'而不是'$this.val'。尽可能避免不必要地使用jQuery将提高性能。
两件事。首先,“wineId”是每个变量中的一个var。这意味着每次迭代都会创建和销毁它。如果希望它持续存在,请将其移到“每个”外部。其次,更重要的是,两个select元素具有相同的id。id不能在单个页面上重复。它们是唯一的ID。第三,只需使用“this.value”。如果您所追求的只是select的值,那么您不必执行$this.val。首先,使用不同的名称和ID,并通过循环不同的select创建一个数组。这是一对夫妇。首先,“wineId”是每个变量中的一个var。这意味着每次迭代都会创建和销毁它。如果希望它持续存在,请将其移到“每个”外部。其次,更重要的是,两个select元素具有相同的id。id不能在单个页面上重复。它们是唯一的ID。第三,只需使用“this.value”。如果你所追求的只是select的值,那么你不必做$this.val。首先,使用不同的名称和ID,通过不同的select循环创建一个数组。嘿,把我推到帖子上。这是我的愚蠢,我没有想到这一点。它现在工作得很好,嘿,快把我推到岗位上去。这是我的愚蠢,我没有想到这一点。它工作得很好,noop使用的是相同的类名,noop使用的是相同的类名
var windeId = $('.SelectWine').map(function(){
return this.value;
}).get();
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]);
});