IE引发了无效的参数错误,firefox没有

时间:2011-04-16 12:26:52

标签: javascript internet-explorer

当我想炫耀JavaScript的力量时,我正在帮助朋友学习HTML,CSS等。我们制作了一些包含云图像的DIV,我们将它们移动到broswer(从右到左,然后当它从页面流出时返回到窗口innerWidth的起点),所以它看起来像天空 - 非常简单脚本。现在一切都很好,但在以后的IE浏览器中我注意到了一个错误。这不是真正的问题,因为脚本有效,但我想知道它为什么会发生以及如何阻止它!

这是我在window.onload事件中使用unobtrussive loader调用的脚本

    function moveCloud(cloudID, TimeOut, CloudWidth, thisLeft){

    var elem = document.getElementById(cloudID);
    var xpos = parseInt(elem.style.left);

    if(xpos > -CloudWidth){
        xpos--; 
      }else{
        xpos = window.innerWidth;
       }

    elem.style.left = xpos + "px";
    movement = setTimeout("moveCloud('" + cloudID + "'," + TimeOut + "," + CloudWidth + "," + thisLeft+ ")",TimeOut);
}

我认为这可能是因为将一个整数连接到一个sting但是我认为JavaScript处理了这个转换?有什么想法吗?

这是错误

  

行:38错误:参数无效。

*更新 * **

这就是我调用函数的方法,首先是

function StartCloud(cloudID, TimeOut, CloudWidth, thisLeft, thisTop){


    var elem = document.getElementById(cloudID); 
    if(elem){ // make sure item exists then position it via the JavaScript not the CSS
        elem.style.position = "absolute"; 
        elem.style.left = parseInt(thisLeft) + "px";
        elem.style.top = parseInt(thisTop)  + "px";
        movement = setTimeout("moveCloud('" + cloudID + "'," + TimeOut + "," + CloudWidth + "," + thisLeft+ ")",TimeOut); // start the animation function
    }
}

这是我的电话 - 有4个云DIVS

window.onload = function (){
    //unobtrussive event handler
    StartCloud('cloud1', 60, 717, 450, 30);
    StartCloud('cloud2', 35, 349, 950, 230);
    StartCloud('cloud3', 30, 335, 300, 260);
    StartCloud('cloud4', 15, 290, 600, 450);
}

1 个答案:

答案 0 :(得分:1)

咄! IE不支持Window.innerWidth,所以我必须使用document.documentElement.clientWidth写一个条件

相关问题