首页 新闻 会员 周边

交流一个JS问题

0
[已解决问题] 解决于 2012-04-20 17:03
function dr(){
        var img = document.getElementById("img");
        var MX = img.style.left; 
        if (MX<936) {
            MX++;
            img.style.left = -MX +"px";
        }
        if(MX>936){
            MX--;
            img.style.left = MX +"px";
        }
        var g = setTimeout("dr()",10);
}
window.onload = function(){
       dr();
}

谁能明白其内在的原因,MX并没有因为setTimeout而自加到936或者自减到936.

问题补充:

我在游览器中实际测试过,实际上,它只执行了一次,也就是-1px;

icepy的主页 icepy | 小虾三级 | 园豆:587
提问于:2012-04-20 15:36
< >
分享
最佳答案
1
var MX = img.style.left; 
取出的结果不是整数,含有px
改成var MX = img.offsetLeft;
奖励园豆:5
zernitta | 菜鸟二级 |园豆:235 | 2012-04-20 16:06
(function(){
                    function dr(){
                        var img = document.getElementById("img");
                        //var MX = img.offsetLeft;
                        var MX = parseInt(img.style.left);
                        if (MX<936) {
                            MX--;
                        }
                        if(MX>936){
                            MX++;
                        }
                        if (MX==936||MX==(-936)) {
                            return true;
                        }
                        img.style.left = MX +"px";
                        setTimeout(dr,10);
                    }
                    function de(){
                        var img = document.getElementById("img");
                        img.style.position = "absolute";
                        img.style.top = "0px";
                        img.style.left = "0px";
                        setTimeout(dr,10);
                    }
                    window.onload = function(){
                        de();
                    }
                })();

我重新写了一下,现在可以了,不过也谢谢你~

icepy | 园豆:587 (小虾三级) | 2012-04-20 17:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册