IE выдал ошибку неверного аргумента, Firefox нет - PullRequest
6 голосов
/ 16 апреля 2011

Я помогал другу изучать 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);
}

1 Ответ

1 голос
/ 18 апреля 2011

Duh! Window.innerWidth не поддерживается IE, поэтому мне пришлось написать условие, используя document.documentElement.clientWidth

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...