JavaScript会在复选框上返回'Nan'吗?

时间:2013-06-27 06:38:57

标签: javascript jquery

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

5 个答案:

答案 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_estimatecalculate_remaining

我设置了全局变量var estimate = 0;

在脚本的最顶部,然后我将calculate_remaining函数放在那个函数下面,然后放在calculate_estimate函数下面。

我不知道为什么会影响它,因为第一个函数不使用estimate variable

很抱歉浪费你的时间,谢谢你的帮助