2011-01-23 101 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); 
}); 

當我運行在Chrome的代碼,它工作正常,每個選擇將更新下評論,不過,在Firefox完全沒有反應!

任何人有這樣的理由的想法?

(哦,正在使用原型庫)

謝謝!

回答

3

innerText是Microsoft版本的標準textContent。 Chrome同時支持,但Firefox只有標準版本。有兩件事情可以做:

假人的測試(只執行一次)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方法

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

使用

setText(el, "text"); 
+0

工作完美!你是個明星! – Lievcin 2011-01-23 13:39:18

+0

我還添加了功能檢測,以防您想支持IE。 – galambalazs 2011-01-23 13:41:00