Добавление элемента html с помощью javascript делает другие js шаткими

У меня есть следующий код javascript, который изменен из демонстрации SimpleUpload в SWFUpload. Он используется для создания временного индикатора выполнения загрузки. Он отлично работает, если я не добавлю код, который был закомментирован. По сути, эта строка сломает презентацию:

this.fileProgressElement.appendChild(document.createTextNode("Статус загрузки"));

Демонстрации: попробуйте загрузить. Функция загрузки не работает.
http://www.mgxvideo.com/mgxcopy-dev/uploader-works/upload_files.php
http://www.mgxvideo.com/mgxcopy-dev/uploader-broken/upload_files.php

Код:
http://www.mgxvideo.com/mgxcopy-dev/uploader-broken/js/sample1.txt
http://www.mgxvideo.com/mgxcopy-dev/uploader-works/js/sample1.txt

function FileProgress(file, targetID) {
    this.fileProgressID = file.id;

    this.opacity = 100;
    this.height = 0;


    this.fileProgressWrapper = document.getElementById(this.fileProgressID);
    if (!this.fileProgressWrapper) {
        this.fileProgressWrapper = document.createElement("div");
        this.fileProgressWrapper.className = "progressWrapper";
        this.fileProgressWrapper.id = this.fileProgressID;

        this.fileProgressElement = document.createElement("div");
        this.fileProgressElement.className = "progressContainer";
        //this.fileProgressElement.appendChild(document.createTextNode("Upload Status"));

        var progressCancel = document.createElement("a");
        progressCancel.className = "progressCancel";
        progressCancel.href = "#";
        progressCancel.style.visibility = "hidden";
        progressCancel.appendChild(document.createTextNode(" "));

        var progressText = document.createElement("div");
        progressText.className = "progressName";
        progressText.appendChild(document.createTextNode(file.name));

        var progressBar = document.createElement("div");
        progressBar.className = "progressBarInProgress";

        var progressStatus = document.createElement("div");
        progressStatus.className = "progressBarStatus";
        progressStatus.innerHTML = " ";

        var progressFull = document.createElement("div");
        progressFull.className = "progressBarFull";
        progressFull.innerHTML = " ";

        this.fileProgressElement.appendChild(progressCancel);
        this.fileProgressElement.appendChild(progressText);
        this.fileProgressElement.appendChild(progressStatus);
        this.fileProgressElement.appendChild(progressBar);
        this.fileProgressElement.appendChild(progressFull);
        this.fileProgressWrapper.appendChild(this.fileProgressElement);

        document.getElementById(targetID).appendChild(this.fileProgressWrapper);
    } else {
        this.fileProgressElement = this.fileProgressWrapper.firstChild;
        this.reset();
    }

    this.height = this.fileProgressWrapper.offsetHeight;
    this.setTimer(null);


}

person montooner    schedule 17.07.2009    source источник
comment
каким образом эта строка нарушит паузу презентации? Я протестировал обе версии с firefox 3.0.x и IE8 и не увидел ничего явно сломанного/неправильного.   -  person VolkerK    schedule 17.07.2009
comment
вопрос, который я задаю в каждой проблеме манипулирования DOM: вы уверены, что DOM загружен?   -  person geowa4    schedule 17.07.2009
comment
Мне они кажутся идентичными: каждый загружен примерно на 45%, а затем заблокирован. Закрытие вкладки заставило мой браузер зависнуть на несколько секунд. Хром 2 на WinXP SP3.   -  person NickFitz    schedule 17.07.2009
comment
для меня это похоже на время, если вы подождете несколько строк, вы получите свой результат, но я согласен с Джорджем, вы должны сначала проверить элемент, прежде чем добавлять к нему   -  person Ayyash    schedule 17.07.2009


Ответы (1)


Следующее работает лучше?

this.fileProgressElement.innerHTML="Upload Status";
person Josh    schedule 17.07.2009