【问题标题】:How to retrieve value from elements in array using jQuery?如何使用jQuery从数组中的元素中检索值?
【发布时间】:2012-08-25 18:12:54
【问题描述】:

我有多个这样的输入字段:

<input type="text" name="card[]">
<input type="text" name="card[]">
<input type="text" name="card[]">

用户可以根据需要添加或删除这些字段,因此字段的名称是一个数组。 要获取数组的长度,这可以正常工作:

var n = $("input[name^= 'card']").length;

如何从数组中读取值?

我试过这个没用:

var n = $("input[name^='card']").length;
var array = $("input[name^='card']");
for(i=0;i<n;i++)
{
 card_value=  array[i].val();
 alert(card_value);
}

这也不起作用:

var n = $("input[name^='card']").length;

for(i=0;i<n;i++)
{
 card_value=  $("input[name^='card["+i+"]']").val();
 alert(card_value);
}

如何从这个数组中读取值? 救命!

【问题讨论】:

  • 请详细说明一下,你想读取什么值,用户在input中实际输入的值?你想检索什么,所有这些?
  • 试试 $(input.attr("[name^='card'])").length;

标签: jquery html arrays


【解决方案1】:

要读取array,也可以使用jQuery的“each”方法:

$.each($("input[name^='card']"), function(index, val){
    console.log(index + " : " + val);
});

奖励:您还可以通过此方法读取对象。

source

【讨论】:

    【解决方案2】:

    使用地图功能

    var values = $("input[name^='card']").map(function (idx, ele) {
       return $(ele).val();
    }).get();
    

    【讨论】:

    • 提示:您也可以在函数中使用$(this) 并删除参数idx 和ele。 .get() 用于从 .map() 返回的 jQuery 对象中提取一个真实数组。
    • 感谢@Robsch 的评论,.get 确实很重要,.map 返回的结果不是javascript 数组。
    【解决方案3】:

    你的语法不正确。

    card_value = $(array[i]).val();card_value = array[i].value;

    array[i] 不是 jQuery 对象(出于某种原因)。

    检查浏览器的控制台可能有助于解决此类问题。

    【讨论】:

      【解决方案4】:

      您可以循环浏览这些项目:

      $("input[name^='card']").each(function() {
          console.log($(this).val());
      });
      

      【讨论】:

        【解决方案5】:

        jQuery 集合有一个内置的迭代器 .each:

        $("input[name^='card']").each(function () {
           console.log($(this).val());
        }
        

        【讨论】:

          【解决方案6】:

          使用:http://jsfiddle.net/xH79d/

          var n = $("input[name^='card']").length;
          var array = $("input[name^='card']");
          
          for(i=0; i < n; i++) {
          
             // use .eq() within a jQuery object to navigate it by Index
          
             card_value = array.eq(i).attr('name'); // I'm assuming you wanted -name-
             // otherwise it'd be .eq(i).val(); (if you wanted the text value)
             alert(card_value);
          }
          

          【讨论】:

            【解决方案7】:

            你应该使用:

            card_value=  array.eq(i).val(); //gets jquery object at index i
            

            card_value=  array[i].value; //gets dom element at index i
            

            【讨论】:

            • @scrappedcola 我怎样才能防止相同的值?
            • @FreddySidauruk 你是什么意思“防止相同的价值”?这与我回答的问题无关。通常,人们会使用 if 块来检查值与数组中的内容。如果您有问题,请在网站上搜索相关问题,如果找不到,请创建您自己的问题。
            猜你喜欢
            • 2022-09-30
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-12
            • 1970-01-01
            • 2015-09-07
            • 2016-03-14
            • 1970-01-01
            相关资源
            最近更新 更多