当我想炫耀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);
}
答案 0 :(得分:1)
咄! IE不支持Window.innerWidth,所以我必须使用document.documentElement.clientWidth写一个条件