Странность Firefox и AJAX: замены DOM не работают снова после того, как просто работают - PullRequest
0 голосов
/ 12 октября 2011

это две функции (внешне загруженные):

function replaceText(element, text) {
    if (element != null) {
        clearText(element);
        var newNode = document.createTextNode(text);
        element.appendChild(newNode);
    }
}

function replaceImage(element, maker, imageState) {
    replaceText(element, "replacing image " + maker + " with " + imageState + " version");
    var imagePath = "_img/coffeeMaker_";
    if (maker != null)
    {
        document.getElementById("coffeeMakerImg"+ maker).src = imagePath + imageState + ".png";
    }
}

Теперь вот часть, которая вызывает эти функции. * обратите внимание, что replaceText() вызывается из replaceImage()

replaceText(cmStatus_01, "BREWING " + name + "'s " + size + " " + beverage);
replaceImage("feedback", "01", "full");
document.forms[0].reset();

хорошо. Теперь вот кикер: FIRST replaceText() отлично работает во всех браузерах. replaceImage() терпит неудачу ТОЛЬКО в Firefox, который СОДЕРЖИТ ВЫЗОВ replaceText(), который работал только так, как рекламировалось !! я мог видеть, как я мог испортить замену изображения (хотя я копировал / вставлял это из другого рабочего проекта, который заменяет изображение в FF ... так странно ...), но я НЕ вижу, как replaceText() может потерпеть неудачу: это просто сработало!

итак: ааааааа !? Я думаю, это какая-то проблема, но я не знаю, почему.

полностью в тупик. лоб очень болит ...

спасибо за ваше время и помощь. я молюсь, чтобы это не было чем-то действительно отсталым ...

WR!

PS: я также запутался, почему, если я удаляю кавычки из имени элемента в вызове replaceImage(), он ломается; но он работает в replaceText() вызове без скобок просто отлично ...

1 Ответ

0 голосов
/ 13 октября 2011

хорошо. я понял. проблема заключалась в том, что я передавал в функции:

cmStatus_01 НЕ было фактическим идентификатором div. это было оценено ранее так:

var cmStatus_01 = document.getElementById('divName');

но я передавал divName в функцию replaceImage() и ожидал его оценочную версию, например cmStatus_01. так что сломалось.

поэтому, когда я фактически перестроил функцию, чтобы передать ТОЛЬКО divName, она, очевидно, сработала. это переоборудование:

function replaceNodeText(id, newText)
{
    var node = document.getElementById(id);
    while (node.firstChild)
    {
        node.removeChild(node.firstChild);
    }
    node.appendChild(document.createTextNode(newText));
}

срок выполнения проекта слишком жесткий! это заставляет мой мозг терпеть неудачу. : P

также: извинения за то, что не опубликовали, откуда пришли переменные. это очень помогло бы, я уверен, и я не знаю, почему я не думал также публиковать их.

спасибо за ваше терпение и ваше время.

WR!

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