2012-02-27 56 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