0

these are the two functions (externally loaded):

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";
    }
}

now here's the part that calls these functions. *notice that the replaceText() is called from within replaceImage()

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

okay. now here's the kicker: the FIRST replaceText() works fine in ALL browsers. the replaceImage() fails ONLY in Firefox which CONTAINS A CALL TO replaceText() that only JUST worked as advertised!! i could see how i might have screwed up the image replacement (even though i copy/pasted it from another working project that DOES replace the image in FF...so weird...), but i do NOT see how the replaceText() can fail: it just worked!

so: whaaaaat!? i'm thinking its some kind of scope issue, but i'm stumped as to why.

totally stumped. forehead really sore...

thank for your time and help. i'm praying this isn't something really retarded...

WR!

PS: i'm also confused why, if i remove the quotes from the element name in the replaceImage() call, it breaks; but it works in the replaceText() call without brackets just fine...

4

1 に答える 1

0

わかった。私はそれを考え出した。問題は実際に私が関数に渡していたものでした:

cmStatus_01div の実際の ID ではありませんでした。以前は次のように評価されていました。

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!

于 2011-10-12T22:44:59.223 に答える