2011-10-22 100 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); 
     } 
    }); 
}); 
相關問題