2012-12-03 17 views
1

林通过与ID的从选中的复选框的jQuery的广东话suming时的值复选框

林收集在一个数组中的值一定值后,但是我也想在标题总结了值,但我得到的返回值不能得到它做到这一点...

我要去哪里错了?我知道它在返回的变量调用但林不知道如何得到它

function doAlloMath(){ 


     var sum=0; 

     alert($("input[name=alloInv]:checked").map(function() {return this.value;}).get().join(",")); 
     alert($("input[name=alloInv]:checked").map(function() {return this.title;}).get().join(",")); 
     alert($("input[name=alloInv]:checked").each(function (a,b) {sum += parseFloat ($(this.title)); return sum;}).get()); 



    } 
+0

什么呢'$(this.title)'包含哪些内容? – Horen

+2

你介意发布一个HTML的小样本吗? – Kyle

回答

0

一个复选框一点儿也不具有价值,除非它明确设置。要看到,如果复选框被选中与否,你需要使用prop('checked');

你可能更喜欢这种尝试的东西:

function doAlloMath() { 
    var sum = 0, 
     elm = $("input[name=alloInv]:checked"), 

     values = elm.map(function() { 
      return this.value; 
     }).get().join(","), 

     titles = elm.map(function() { 
      return this.title; 
     }).get().join(","); 

    elm.each(function(idx, elem) { 
     sum += parseFloat(this.title); 
    }); 

    console.log(sum); 
    console.log(values); 
    console.log(titles); 
}​ 
+0

嗯对不起adeneo而言,我收集的检查值正常的,有困难我尝试总结的标题值时,林创建对象只是不知道怎么挺访问sum'd价值 –

+0

好Ive得到这个工作真的很好,你缺失从获得()的})。join()方法在每个elm.map通话结束但那是唯一的事情... 然而奇怪的东西用SUM函数发生的阵列显示正确的数字,但数学是错误的? 7.93 管理员_... nts.asp(线39) 管理员_... nts.asp(线40) 7.93 管理员_... nts.asp(线41) 15.86 管理员_... nts.asp(线39) 2018386,2018375 管理员_... nts.asp(线40) 7.93,8.74 管理员_... nts.asp(线41) 23.79 管理_... nts.asp(39行) 2018386,2018375,2018372 管理_... nts.asp(40行) 7.93,8.74,7.88 –

+0

我其实去除GET( ),因为我不认为你需要它们,但是我的想法已经关闭了,你当然需要它们,否则你会试图加入对象,这是行不通的。为什么数学关闭我不知道,我会为上面的代码添加一个单独的函数,看看它是如何工作的,但它应该迭代与map函数完全相同的值? – adeneo

1

我觉得你的$(this.title)可能指向的东西在意料之外$。每()

+0

tHanks Hippocrates,是它指向第一个标题值,而不是循环MAP函数循环的地方,但是我怎样才能得到在从地图功能总结的值? –

+0

你应该用b来引用它而不是这个。每个函数的第二个参数是一个自动传递2个参数的匿名函数。第一是指数,第二是价值。就你而言,这是b。在匿名函数中使用b.val()来获取复选框的值。 – Hippocrates

0

我猜你的HTML的背景下看起来是这样的:

<input type="checkbox" name="alloInv" value="10.0" /> 
<input type="checkbox" name="alloInv" value="20.0" /> 

综上所述什么被选中,你可以使用以下命令:

var sum = 0; 
$('input[name="alloInv"]').filter(':checked').each(function() { 
    sum += parseFloat(this.value); 
}); 
alert(sum);