0

基本上,我在 MS Visual Studio 2012 中有这个代码,用于 Windows 8 JavaScript+jQuery 应用程序。

<script>

    window.setInterval(function () {

        var currentx = $(".ball").css("left");
        var currenty = $(".ball").css("top");


        $(".ball").css("top", currentx + 1);
        $(".ball").css("left", currenty + 1);

        //debug
        var time=1;
        $("p.test").text("Has been called " +time);
        var time=time+1;

    }, 100);

</script>

是的,我使用的是 jQuery 2.0

现在我在这里查看了 API 的http://www.w3schools.com/js/js_timing.asp 和这里 http://api.jquery.com/css/

我的代码可以编译,但它只是没有更新球的位置。看来它只被调用一次。如果它有帮助,球是一个DIV元素。也许 windows 8 应用程序不完全支持 DOM 操作,或者只是 Window 全局变量,我真的不知道。

我需要什么代码来实现我的目标,即按设定的时间间隔更新类球的顶部和左侧 CSS 规则的这个元素?

4

1 回答 1

1

.css("left").css("top")返回一个字符串(例如0px)而不是一个数字,所以你需要用parseInt其他的currentx + 1结果来解析它,例如0px1

看起来它只被调用一次,因为在回调time中定义并设置为 1 setInterval,您需要在回调之外定义和初始化它setInterval

而不是.css("left")你也可以考虑使用.position().left.

(function() {
    var time=1;
    window.setInterval(function () {

            var currentx = parseInt($(".ball").css("left"),10); 
            var currenty = parseInt($(".ball").css("top"),10);


            $(".ball").css("top", currentx + 1);
            $(".ball").css("left", currenty + 1);

            //debug

            $("p.test").text("Has been called " +time);
            time=time+1;

    }, 100);
})();
于 2013-05-02T06:14:38.770 回答