firefox的innerHTML替代方案

innerHTML alternative for firefox

本文关键字:方案 innerHTML firefox      更新时间:2023-09-26

我正在用以下代码行填充html表

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中也是如此。

可能不是问题,但您有一个额外的'

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

另外,第一个if语句在firefox中工作,但由于(document.all)的原因,firefox不会输入它。。。

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

而不是整个if-else语句,那么它将在FF和IE中工作。

原因如下:https://developer.mozilla.org/en/Mozilla_Web_Developer_FAQ

一些专有文档对象,如document.all和document.layers不是W3C DOM的一部分,在Mozilla。(对document.all有部分检测不到的支持,不过,在Mozilla的新版本中。但是,仅此功能存在是为了与专门为IE编写的网站兼容。您不应依赖Mozilla的文档。所有对新页面的支持。)这个方法document.getElementById()

textContent:替换innerHTML

tblRCRPCombo.rows[tblRCRPCombo.rows.length-1].textContent = newTR.textContent;