Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:从同名的不同select标记获取值_Javascript_Jquery_Html_Cookies - Fatal编程技术网

Javascript jQuery:从同名的不同select标记获取值

Javascript 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"

我试图使用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>
我得到的控制台日志如下

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]);
});