HTML / PHP:
echo "<input type='checkbox' id='chk_esitmate' onchange='calculate_estimate(this);'
name='" . $row['id'] ." value=". ($row['value'] ? $row['value']: '0') .
"'/>";
所以每个人看起来像:
<input type='checkbox' id='chk_estimate' onchange='calculate_estimate(this);' name = '14' value=40/>
JavaScript的:
var estimate = 0;
function calculate_estimate(elem)
{
var value = parseInt(elem.value, 10);
var status = jQuery('#span_estimate');
if (elem.checked)
{
window.estimate += value;
status.html(window.estimate);
}
else {
window.estimate -= value;
status.html(window.estimate);
}
}
但是,每次单击复选框时,它都会返回NaN(非数字)。有谁知道我哪里出错了?我用过parseInt
答案 0 :(得分:1)
在这里为我工作 - http://jsfiddle.net/atif089/NyA4H/
确保在标题中定义了calculate_estimate
,而不是在页脚中定义。
答案 1 :(得分:0)
既然你已经使用了jQuery,为什么不这样做呢:
var estimate = 0;
$('#chk_estimate').click(function() {
var value = $(this).val();
// do your stuff in here
});
答案 2 :(得分:0)
您可以使用javascript来了解是否选中复选框
if(document.getElementById('chk_estimate').checked==true)
{
var num=document.getElementById('chk_estimate').value;
alert(num);
}
答案 3 :(得分:0)
鉴于我无法直接访问您的文件,这个答案主要是在黑暗中拍摄,但它来自过去的经验。正如@SubirKumarSao所说,如果遇到的第一个字符无法转换为数字,parseInt将抛出NaN。这让我相信你从另一个网站复制了一个隐藏的角色..这种情况在处理这些错误时最常见,但当然这个角色也可能存在于你的$row
数组中。除此之外......
echo "<input type='checkbox' id='chk_esitmate' onchange='calculate_estimate(this);'
name='" . $row['id'] ." value=". ($row['value'] ? $row['value']: '0') .
// missing quote here ^ and ^ here
"'/>";
此行被窃听;你在关闭双引号之后忘了单引号,在开盘双引号之前,我留下了一条评论,指出缺少的单引号应该在哪里。
该行应该是什么样的:
echo "<input type='checkbox' id='chk_esitmate' onchange='calculate_estimate(this);' name='" . $row['id'] ."' value='". ($row['value'] ? $row['value']: '0') ."'/>";
答案 4 :(得分:0)
好吧,我已经解决了这个问题,这是一个我不理解的错误。
我在页面上有javscript函数:calculate_estimate
和calculate_remaining
。
我设置了全局变量var estimate = 0;
在脚本的最顶部,然后我将calculate_remaining
函数放在那个函数下面,然后放在calculate_estimate
函数下面。
我不知道为什么会影响它,因为第一个函数不使用estimate variable
很抱歉浪费你的时间,谢谢你的帮助