【发布时间】:2014-06-11 23:02:44
【问题描述】:
我不擅长使用 javascript/jquery,所以这是一个愚蠢的问题! 我编码了这个
<li>
<a href="http://www.mazzodifiori.it/fiori/P15-Ficus.jpg"><img src="http://www.mazzodifiori.it/fiori/P15-Ficus.jpg" width=50 height=50 /></a>
<br><input name="p1" value="p1" prezzo="5" type="checkbox" />
<br><label>Pianta €</label><span class="price">5</span>
</li>
<li>
<a href="http://www.mazzodifiori.it/fiori/P15-Ficus.jpg"><img src="http://www.mazzodifiori.it/fiori/P15-Ficus.jpg" width=50 height=50 /></a>
<br><input name="p2" value="p2" prezzo="3" type="checkbox" />
<br><label>Pianta €</label><span class="price">3</span>
</li>
var checkValues = $('input[type=checkbox]:checked').map(function() {
return $(this).attr('prezzo');
}).get();
for(var i=0;i<checkValues.length;i++) {
var tot = tot + checkValues[i];
alert(tot);
}
以这种方式检查值包含数字数组。因此,例如检查 2 个复选框,在浏览器上会出现 2 个警报:
undefined5
和
undefined53
如果 javascript 像字符串一样连接数字!
我该如何解决这个问题?
【问题讨论】:
-
var tot = tot + checkValues[i];- 右侧的tot未初始化。因此结果。将声明放在循环之外var tot=0; -
为什么你认为
checkValues包含一个数字数组?您是否阅读过.attr()的文档?它总是返回一个字符串(或undefined)。 -
观看此异常无法读取 null 的属性 'map',似乎问题在于 map 函数从复选框接收 null 或未定义的值
-
你应该把这个
for(var i=0;i<checkValues.length;i++) { var tot = tot + checkValues[i]; alert(tot); }改成这个:var i,tot=0; for(i=0;i<checkValues.length;i++) { tot = tot + +checkValues[i]; alert(tot); }。 Javascript 没有块作用域——所以如果你把它写在for块之外就不会那么混乱了。此外,您应该将tot初始化为零,因为在第一次迭代中tot的值是undefined
标签: javascript jquery string sum