绑定不按预期保存值

时间:2013-11-14 16:47:42

标签: javascript

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事件上的此警报会生成递增日期的值。

2 个答案:

答案 0 :(得分:1)

假设您不能/不想使用第二个变量而不是使用bind传递日期对象的字符串表示形式,并在回调函数内的该字符串中创建一个新的日期对象。

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);

答案 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);
}());