获取特定的div
similiar ID的所有DIV值我有一个div结构像下面获取特定的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>
现在如何在一个变量添加所有隐藏的输入值。感谢
使用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);
});
关于地图的快速问题,将它用于选择器和每个选择器(在此示例中)有什么好处? (明显少了一些代码,但速度更快?) – Magrangs 2012-03-29 14:01:38
@Magrangs'map'为您提供集合作为结果值,而对于'each',您必须在每个回调之外初始化集合并添加到其中遍历元素。 – Yoshi 2012-03-29 14:04:59
加上yoshi的评论,map是返回新的数组,每个都是返回相同的数组。所以在这种情况下需要创建新的数组,所以它说你使用地图。较少的代码是另一个好处。 查看更多详情http://stackoverflow.com/questions/749084/jquery-map-vs-each – 2012-03-29 14:05:55
我想你想的:
var hidden_value = new Array();
var hiddens = document.getElementById("main").childNodes;
for(i = 0 ; i < hiddens.length ; i++){
hidden_value.push(hiddens[ i ].value);
}
你的代码不起作用,这是你的小提琴http://jsfiddle.net/sK4Nt/,检查我的答案。 – 2012-03-29 14:40:00
@SheikhHeera这就是答案:[undefined,“12”,undefined,“12”,undefined]。现在,“12”代表答案。不要争论编辑代码+) – 2012-03-29 14:42:11
OP只需要来自隐藏输入的值。 – 2012-03-29 14:44:23
var total = 0;
$('#main input[id^="people_"]').each(function(){
total += parseInt(this.value, 10);
});
注意,我我正在使用属性从选择器开始,以查找其ID为开始的所有输入元素。
total
会给你所有输入元素值的总和。
+1:这是满足所有要求的唯一答案。 – 2012-03-29 14:01:53
@manishjangir - 这是你在找什么? – ShankarSangoli 2012-03-29 14:08:21
一个建议 - 我会编辑答案并将'#main' div添加到选择器。 – 2012-03-29 14:10:35
你可以尝试这样的事:
var peopleData = $("#main input[type=hidden]").serializeArray();
把值的变量是没有意义的。您可以在一个阵列插入值,并执行所需的操作
你不能添加数字,并把总和在一个变量? – 2012-03-29 14:00:45
使用普通的JavaScript
var els=document.getElementById('main').childNodes;
var allVal=[];
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。
“在一个变量”?你能举一个例子结果吗? – Ryan 2012-03-29 13:56:41
这是唯一的例子 – manishjangir 2012-03-29 13:57:27
使用任何客户端?你有你的代码吗? – 2012-03-29 13:57:47