Я помогал другу изучать HTML, CSS и т. Д., Когда я хотел показать мощь JavaScript. Мы создали несколько DIV, которые содержат облачное изображение, и мы перемещаем их по броузеру (справа налево, затем, когда он стекает со страницы, он возвращается в начальную точку окна innerWidth), поэтому он выглядит как небо - довольно просто скрипт. Теперь все было нормально в Firefox, но, глядя на это позже в IE, я заметил ошибку. На самом деле это не проблема, так как скрипт работает, но я хотел бы знать, почему это происходит и как это остановить!
Вот сценарий, который я вызываю с помощью ненавязчивого загрузчика для события window.onload
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);
}
Я думал, что это может быть связано с конкатенацией целого числа с укусом, но я думал, что 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);
}