2013-04-26 71 views
4

在下面的代碼中,當有人啓動點擊函數時,如何覆蓋「donateAmount」變量?覆蓋從val中獲取的變量()

換句話說,只要有人點擊它,就會刪除變量「donateAmount」中的任何內容,並用新的val()數量替換。

謝謝

更新

下面這段代碼現在的作品,由於固定變量的作用域問題。

$('label input').click(function() { 
    if ($('label input').is(':checked')) { 
     $(this).parent().addClass('checked'); 
     $('.donate-now label').not($(this).parent()).removeClass('checked'); 
     var donateAmount = $(".checked input").val(); 


    } 


    $('#click').click(function(){ 

     if ($('label #other').is(':checked')) { 
      donateAmount = $("#otherAmount").val(); 
     } 
      $('p').html(donateAmount); 

    }); 
}); 
+2

看起來像一個範圍的問題;刪除'donateAmount'前面的第二個'var'。也可以快速閱讀[變量範圍](https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Statements/var)。 – 2013-04-26 22:08:44

+0

您不能在同一範圍內重新聲明變量。 – noahnu 2013-04-26 22:10:12

+0

感謝您對變量作用域的關注,我研究了它並獲得了代碼工作。 – Richard 2013-04-26 22:25:56

回答

0

試試這個

var donateAmount = $(".checked input").val(); 
$('label input').click(function() { 
    var $this = $(this); 
    if ($this.is(':checked')) { 
     $this.closest('label').addClass('checked'); 
     $('.donate-now label').not($this.closest('label')).removeClass('checked'); 
     donateAmount = $this.val(); 
     if ($('#other').is(':checked')) { 
      donateAmount = $("#otherAmount").val(); 
     } 
    } 
}); 

$('#otherAmount').change(function() { 
    donateAmount = this.value; 
}); 

$('#click').click(function() { 
    $('p').html('$' + donateAmount); 
}); 

Check fiddle

您所定義的點擊事件$('#click').click(function()將事件多次綁定,一次爲每次點擊的方式。

因此,將事件移到點擊事件之外。

也嘗試使用.on綁定事件處理程序。

.click(function() {修改.on('click', function() {

+0

它最初工作,但如果您選擇另一個複選框,該變量不會替換原始變量。這是行動,http://jsfiddle.net/YB8UW/33/ – Richard 2013-04-26 22:17:48

+0

檢查更新後的帖子。 – 2013-04-26 23:32:41