#javascript #internet-explorer
#javascript #internet-explorer
Вопрос:
Я помогал другу изучать HTML, CSS и т.д., Когда хотел продемонстрировать возможности JavaScript. Мы создали несколько разделов, которые содержат изображение облака, и мы перемещаем их по экрану (справа налево, затем, когда он стекает со страницы, он возвращается к начальной точке внутренней ширины окна), так что это похоже на небо — довольно простой сценарий. Теперь в 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);
}
Я думал, что это может быть связано с объединением целого числа в 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 облачных подразделения
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. elem.style. left = xpos «px»; находится в строке 38, глупый я, забыл этот бит!
2. Я собираюсь сказать, что вы ошибаетесь, и это не та строка.
Invalid argument
подразумевает некоторую форму вызова функции.3. у вас также отсутствует основание в parseInt
parseInt(elem.style.left, 10)
4. Вы используете
setTimeout
для повторного выполнения чего-либо?5. Дух! Window.innerWidth не поддерживается IE, поэтому мне пришлось написать условие, используя document.documentElement.clientWidth
Ответ №1:
Дух! Window.innerWidth не поддерживается IE, поэтому мне пришлось написать условие, используя document.documentElement.clientWidth