jQuery setInterval不断更新数据属性

时间:2015-08-03 13:59:06

标签: javascript jquery setinterval

我有一个div类名“tw_marquee_scroller”。我想每1秒更新一次数据左值。例如,在第一秒中,值将是10,然后是20,30,40 .......我正在使用此代码,但它会一次又一次地返回10。这有什么问题?

jQuery(document).ready(function($){

    $('.tw_marquee_scroller').attr('data-left', 0);

    setInterval(function(){
        var position = parseInt($('.tw_marquee_scroller').data('left'));
        var new_position = position + 10;
        $('.tw_marquee_scroller').attr('data-left', new_position);
        console.log(new_position);
    }, 1000);

});

4 个答案:

答案 0 :(得分:2)

尝试使用data而不是data()撰写attr()属性:

$('.tw_marquee_scroller').data('left', 0);

setInterval(function(){
    var position = parseInt($('.tw_marquee_scroller').data('left'));
    var new_position = position + 10;
    $('.tw_marquee_scroller').data('left', new_position);
    console.log(new_position);
}, 1000);

答案 1 :(得分:0)

为什么你没有以同样的方式获取价值?

print(i/1000)

答案 2 :(得分:0)

将该行中的data('left')更改为:

 var position = parseInt($('.tw_marquee_scroller').attr('data-left'))

它会起作用

答案 3 :(得分:0)

这是一种窗口污染较少的方法:

$( (function($) {
var scroller = $('.tw_marquee_scroller');

scroller.data('left', 0);

setInterval( function() {
    scroller.data('left', parseInt( scroller.data('left'), 10 ) + 10 );
    console.log( scroller.data("left") );
}, 1000 );

}(jQuery.noConflict())) )