为什么这个简单的 jQuery 不起作用

发布于 2024-12-11 11:32:42 字数 492 浏览 0 评论 0原文

$(function() {

    var div  = $('div');

    $('input').click(function() {
        if($(this).is(':checked')) {
            div.html(div.text() += 49);    
        } else {
            div.html(div.text() -= 49);      
        }
    });

});

这太疯狂了,由于某种原因 +=-= 标记了错误的分配,为什么会这样呢?

顺便说一句,我没有将此代码用于任何用途,我知道它不好,我只是测试 +=

示例! http://jsfiddle.net/dD73X/

$(function() {

    var div  = $('div');

    $('input').click(function() {
        if($(this).is(':checked')) {
            div.html(div.text() += 49);    
        } else {
            div.html(div.text() -= 49);      
        }
    });

});

This is crazy, for some reason the += and -= flag up bad assignment, why so?

By the way, I'm not using this code for anything, I know its bad, I'm just testing the +=

Example! http://jsfiddle.net/dD73X/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

落日海湾 2024-12-18 11:32:42

您不能将某些内容分配给临时结果。请改用 +-。另外,不需要使用复合运算符进行赋值,因为 div.html(...) 正是这样做的:它用加法/减法的结果替换 div 的文本。

更新:您似乎还想进行整数加法(而不是字符串连接)。为此,您还需要包含 parseInt ,使代码:

 $('input').click(function() {
    if($(this).is(':checked')) {
        div.html(parseInt(div.text()) + 49);
    } else {
        div.html(parseInt(div.text()) - 49);
    }
});

You cannot assign something to a temporary result. Use + and - instead. Also, there would be no need to assign with the compound operators because div.html(...) does exactly that: it replaces the text of the div with the result of the addition/subtraction.

Update: It seems that you also want to do integer addition (instead of string concatenation). You 'd need to include parseInt as well for that, making the code:

 $('input').click(function() {
    if($(this).is(':checked')) {
        div.html(parseInt(div.text()) + 49);
    } else {
        div.html(parseInt(div.text()) - 49);
    }
});
不爱素颜 2024-12-18 11:32:42
 div.html(parseInt(div.text(), 10) += 49); 
 div.html(parseInt(div.text(), 10) += 49); 
懵少女 2024-12-18 11:32:42

这是另一种方法,它做同样的事情: http://jsfiddle.net/dD73X/2/

$(document).ready(function() {
    $('input').change(function() {
        var t = parseInt($('div').text(), 10);
        if ($('input').attr('checked')) {
            $('div').text(t += 49);
        }else{
            $('div').text(t -= 49);
        }
    });
});

Here is another way, which does the same thing: http://jsfiddle.net/dD73X/2/.

$(document).ready(function() {
    $('input').change(function() {
        var t = parseInt($('div').text(), 10);
        if ($('input').attr('checked')) {
            $('div').text(t += 49);
        }else{
            $('div').text(t -= 49);
        }
    });
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文