firefox的innerHTML替代品

时间:2012-02-27 08:33:14

标签: javascript html firefox innerhtml

我用以下代码行填写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中也是如此。

2 个答案:

答案 0 :(得分: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中工作。

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

  

某些专有文档对象,例如document.all和   document.layers不是W3C DOM的一部分,不受支持   Mozilla的。 (对document.all有部分不可检测的支持,   但是,在较新版本的Mozilla中。但是,仅限该功能   存在与专门为IE创作的网站兼容。您   不应该依赖Mozilla的document.all支持新页面。)   可以使用 document.getElementById()方法。

答案 1 :(得分:-1)

innerHTML替换为textContent

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