2012-02-27 54 views
0

我填寫的HTML表格與下面的代碼行innerHTML的替代Firefox的

的Javascript:

var newTR = document.createElement("TR"); 
var newTD; 

    newTD = document.createElement("TD"); 
    newTD.width = "22%" 

    newTD.innerHTML = "<input type='text' name='AppOrderTxt1' readOnly='true'"+ 
    "' id='AppOrderTxt' value=' test' class='text-noborders' onFocus='this.blur()' size='3'/>"; 

    newTR.appendChild(newTD); 

    if(document.all){ 
     tblRCRPCombo.children[0].appendChild(newTR); 
    }else{ 

     tblRCRPCombo.insertRow(tblRCRPCombo.rows.length);       
     tblRCRPCombo.rows[tblRCRPCombo.rows.length-1].innerHTML=newTR.innerHTML; 
    } 

當我試圖通過名字AppOrderTxt1得到請求參數值,在Firefox返回null,而同樣的東西在IE中工作。

+0

是否輸入出現在HTML頁面?如果修復了語法錯誤(在id屬性之前有一個額外的引號),它會起作用嗎? – 2012-02-27 08:36:02

+0

我已刪除多餘的報價,但它不能有任何區別 – chetan 2012-02-27 09:10:36

+0

您是否解決了這個問題? – Niklas 2012-02-28 10:30:06

回答

2

可能不是一個問題,但你在那裏有一個額外的'

newTD.innerHTML = "<input type='text' name='AppOrderTxt1' readOnly='true'"+ 
    " id='AppOrderTxt' value=' test' class='text-noborders' onFocus='this.blur()' size='3'/>"; 

此外,第一if語句是工作在Firefox,但Firefox將不能進入,因爲那(的document.all) 。如果你只有該行...

tblRCRPCombo.children[0].appendChild(newTR);

...而不是整個的if else語句,那麼它將在FF和IE瀏覽器。

這裏的原因:爲的document.all和 document.layers不是W3C DOM的一部分,Mozilla的 不支持https://developer.mozilla.org/en/Mozilla_Web_Developer_FAQ

一些專有的文檔對象,。 (儘管在更新版本的Mozilla中,document.all, 部分無法檢測到,但爲了與專門爲IE編寫的站點兼容,該功能僅存在 。您不應該依賴Mozilla的document.all支持新頁面) 方法document.getElementById()可以用來代替。

+0

document.getElementById()可用於IE 5.5及以上... – 2012-02-27 08:52:50

+0

我已刪除多餘的報價,並且如果條件也一樣但仍然不能有任何區別 – chetan 2012-02-27 09:13:37

+0

http://jsfiddle.net/CvK5R/6/這適用於FF 10和IE 8中的我。可能是一個愚蠢的問題,但你是否聲明瞭'tblRCRPCombo'變量? – Niklas 2012-02-27 09:15:57