2011-10-22 45 views
0
$(function() { 

    var div = $('div'); 

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

}); 

这是疯狂的,由于某种原因,+=-=标志了坏的分配,为何如此?为什么没有这种简单的jQuery工作

顺便说一句,我没有使用此代码的任何东西,我知道它不好,我只是测试+=

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

+0

你想做什么?添加值? –

+0

@JaredFarrish http://jsfiddle.net/dD73X/ – daryl

+0

http://jsfiddle.net/DANzv/ –

回答

6

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

更新:看来你也想做整数加法(而不是字符串连接)。你倒是需要包括parseInt以及为,使得代码:

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

啊,我明白了,谢谢你的解释。 ✔ – daryl

+2

换句话说,div.text()不是左值 - 你试图赋值给它,而你不能。 –

+3

代替parseInt,我只是做了'div.text()* 1 + 49'。 –

0
div.html(parseInt(div.text(), 10) += 49); 
+1

总是添加',10)'到'parseInt',否则'parseInt(“080”)=== 0'。 – pimvdb

+0

@pimvdb,是的好点提及,althogh我不认为他需要它....(他甚至没有注意到parseInt ....) –

0

这里是另一种方式,它做同样的事情: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); 
     } 
    }); 
}); 
相关问题