2011-01-23 30 views
1

フォームのユーザーの入力に応じて多くのコメントと設定があるため、リストの一部のコンポーネントをインタラクティブにするようにしています。JsファンクションはChromeでうまく動作しますが、Firefoxでは動作しません。

この製品はいくつかのコンポーネントから構成されていますが、それぞれが独自のプロパティを持っていますが、製品の検証は選択したコンポーネントの値に依存しています。

私は私のビューから呼び出されるJS以下の機能があります。

function change_people() { 
    money1 = $('money_1').children[0].value; 
    if (money1 == 5) { 
     $('comment_2').innerText = "sss"; 
     //$('comment_2').hide(); 
    } 
    else { 
     $('comment_2').innerText = ""; 
     //$('comment_2').show(); 
    } 
} 

document.observe('dom:loaded', function() { 
    change_people(); 
    $('money_1').children[0].observe('change', change_people); 
}); 

私はクロームでコードを実行すると、それはそれはFirefoxで、しかし、次のコメントを更新する各選択して、正常に動作します完全に反応しません!

誰でもこの理由が考えられますか?

(オハイオ州およびプロトタイプのライブラリを使用している)

ありがとう!

答えて

3

innerTextは、標準textContentのMicrosoftバージョンです。 Chromeは両方をサポートしていますが、Firefoxは標準のものだけをサポートしています。 (一回だけ実行)

1.ダミーテストkeep in mind the gotchas

var textContent = (function() { 
    var dummy = document.createElement("span"); 
    dummy.innerHTML = "full <span>support</span>"; 
    if (dummy.textContent === "full support") { 
    return "textContent"; 
    } else { 
    return "innerText"; 
    } 
})(); 

使い方

el[textContent] = "text"; 

2.使用DOMメソッド:あなたがすることができる2つあります

function setText(el, text) { 
    while (el.firstChild) { 
     el.removeChild(el.firstChild); 
    } 
    el.appendChild(document.createTextNode(text)); 
} 

使い方

setText(el, "text"); 
+0

完璧に機能しました!あなたはスターです! – Lievcin

+0

IEをサポートしたい場合に備えて、機能の検出機能も追加しました。 – galambalazs

+0

'innerText'と' textContent'は*全く同じではないことに注意してください。そこには本当の問題があります:http://stackoverflow.com/questions/1359469/innertext-works-in-ie-but-not- in-firefox/1359822#1359822 –

1

Element.updateを使用するのが簡単です。

$('comment_2').update((money1 == 5) ? 'sss' : ''); 
+0

これはすごくうまくいく!それはありがとう! – Lievcin

関連する問題