2013-11-14 36 views
1
var trackDay = new Date(2013, 10, 1); 


alert(trackDay); 

img.addEventListener("click", function(trackDay){        
    alert(trackDay); 
}.bind(null,trackDay),true); 

trackDay.setDate(trackDay.getDate()+1); 

當我希望它成爲第一個值時,此click事件警報會生成遞增日期的值。綁定不如預期保存值

+0

看起來是按預期工作。 – epascarello

+0

您的代碼不警惕1:[plunker](http://plnkr.co/edit/ezJBGcbEo6Pvj54Ifuhb?p=info) – katranci

+0

請參閱編輯後的版本,問題在於使用setDate時。 – user1209203

回答

1

假設你不能/不想使用第二個變量比您可以通過使用綁定的日期對象的字符串表示和在你的回調函數中創建一個新的日期對象。

Check the plunker here

var trackDay = new Date(2013, 10, 1); 

alert(trackDay); 

img.addEventListener("click", function(trackDay){ 
    var date = new Date(trackDay); 
    alert(date); 
}.bind(null,trackDay.toString()),true); 

trackDay.setDate(trackDay.getDate()+1); 
0

jsfiddle做你想做的事嗎?

HTML:

<img src="http://placekitten.com/100/100" /> 

的JavaScript:

(function() { 
    'use strict'; 
    var img; 
    function trackDay (val) { 
     return function() { 
      alert(val); 
      val += 1; 
     } 
    } 
    img = document.getElementsByTagName('img')[0]; 
    img.addEventListener("click", trackDay(0), true); 
}());