【问题标题】:Get all div values of similiar id in a particular div获取特定 div 中所有相似 id 的 div 值
【发布时间】:2012-03-29 22:36:21
【问题描述】:

我有一个像下面这样的 div 结构

    <div id=main">
<input type="hidden" id="people_0_1_0" value="12"/>
<input type="hidden" id="people_0_1_1" value="12"/>
</div>

现在如何在变量中添加所有隐藏的输入值。谢谢

【问题讨论】:

  • “在变量中”?你能展示一个示例结果吗?
  • 这是唯一的例子
  • 使用任何客户端?你有那个代码吗?
  • 您需要提供更多关于您想要达到的目标的详细信息。

标签: javascript jquery


【解决方案1】:

使用Jquery的map函数

var myArray = $('#main input').map(function(){
   return $(this).val();
}).get();

它将所有输入的值(在这种情况下为 12 和 12)收集到数组变量。

见 jsfiddle http://jsfiddle.net/GkXUS/1/

如果您想获得值的总和,您可以执行以下操作

var total = 0;
$.each(myArray,function() {
    total += parseInt(this,10);
});
​

【讨论】:

  • 关于 map 的快速问题,与仅使用选择器和 each(在此示例中)相比,使用它有什么好处? (显然代码更少,但它也更快吗?)
  • @Magrangs map 将集合作为结果值提供给您,而使用each 您必须在每个回调之外初始化集合并在迭代元素时添加到它。
  • 添加 Yoshi 的评论,map 正在返回新数组,每个都返回相同的数组。所以在这种情况下需要制作新数组,所以它告诉你关于使用地图。更少的代码是另一个好处。有关更多详细信息,请参阅此stackoverflow.com/questions/749084/jquery-map-vs-each
  • @Chuck - 你为什么要使用map,然后在数组上运行每个循环来获得总和,如果它可以通过一个循环来实现?
  • 不需要。我只是展示计算总和的方法。他可以在没有地图的情况下做。
【解决方案2】:
var total = 0;

$('#main input[id^="people_"]').each(function(){
     total += parseInt(this.value, 10);
});

请注意,我使用以选择器开头的属性来查找 id 以people_ 开头的所有输入元素。

total 将为您提供所有输入元素的总和值。

【讨论】:

  • +1:这是满足所有要求的唯一答案。
  • 一个建议 - 我会编辑答案并将 #main div 添加到选择器中。
【解决方案3】:

我猜你想要这个:

var hidden_value = new Array();
var hiddens = document.getElementById( "main" ).childNodes;
for( i = 0 ; i < hiddens.length ; i++ ){
    hidden_value.push( hiddens[ i ].value );
}

【讨论】:

  • 你的代码不起作用,这是你的小提琴jsfiddle.net/sK4Nt,检查我的答案。
  • @SheikhHeera 这就是答案:[未定义,“12”,未定义,“12”,未定义]。现在,“12”-s 代表答案。不争论编辑代码+)
  • OP 只需要来自隐藏输入的值。
【解决方案4】:

你可以试试这样的:

var peopleData = $("#main input[type=hidden]").serializeArray();

【讨论】:

    【解决方案5】:

    将值放入变量中没有意义。您可以将值插入数组并执行所需的操作

    【讨论】:

    • 你不能将数字相加并将总和放入变量中?
    【解决方案6】:

    使用纯 JavaScript

    var els=document.getElementById('main').childNodes;
    var a​llVal​=​​​​​​​​[];
    for(i=0; i<els.length-1; i++)
    {
        if(els[i].nodeType != 3 && els[i].type=="hidden") allVal.push(els[i].value); 
    }
    console.log(allVal); // the array
    console.log(allVal[0]); // first value
    

    一个例子是here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-05
      • 2019-07-01
      • 2016-06-09
      • 2012-04-09
      • 2015-06-24
      • 1970-01-01
      相关资源
      最近更新 更多