альтернатива innerHTML для firefox - PullRequest
0 голосов
/ 27 февраля 2012

Я заполняю 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, возвращается null в FireFox, тогда как то же самое работает в IE.

Ответы [ 2 ]

2 голосов
/ 27 февраля 2012

Может не быть проблемой, но у вас есть дополнительные ':

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

Кроме того, первый оператор if работает в Firefox, но Firefox не будет вводить его из-за (документа.все).Если у вас есть только эта строка ...

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

... вместо всего оператора if else, тогда он будет работать в FF и IE.

И вот почему: https://developer.mozilla.org/en/Mozilla_Web_Developer_FAQ

Некоторые проприетарные объекты документов, такие как document.all и document.layers, не являются частью DOM W3C и не поддерживаются в Mozilla,(Тем не менее, существует частичная необнаружимая поддержка document.all в более новых версиях Mozilla. Однако эта функциональность существует только для совместимости с сайтами, созданными специально для IE. Вы не должны полагаться на поддержку document.all Mozilla на новых страницах.)вместо него можно использовать метод document.getElementById () .

0 голосов
/ 18 октября 2018

Заменить innerHTML на textContent:

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