【问题标题】:Browser Independence not getting value of the row of a table浏览器独立性未获取表行的值
【发布时间】:2017-05-17 02:13:47
【问题描述】:

我无法获得一行的值,因为它提供了对象文本(在 FireFox 和 Chrome 中),它应该是对象 HTMLInputElement(在 IE 中)。 这在 IE 中运行顺利,但在 Firefox 中却不行。

HTML 代码:

<table id="mode">

<tr class="jnclisthdrrow">
    <td class ="jnclistcenter">&nbsp;</td>
    <td class ="jnclistcenter">Rank</td>
    <td class ="jnclistcenter">Mode</td>

 </tr>
 <tr>
    <td class ="jnclistcenter">&nbsp;</td>
    <td class ="jnclistcenter">&nbsp;</td>
    <td class ="jnclistcenter">&nbsp;</td>

</tr>
<tr >
<td class="jnclistcb">
    <input type=checkbox name="MODE_SL_Instance" value="0"></td>
<td align="center" class="tdata">   1</td>
<td class = "listdataright"><option value=''></option><option value='1246'>CWT</option>
</td>
</tr>
</table>

JAVA脚本代码

 var table = document.getElementById("mode");
 var max = table.rows.length;
 console.log("no of rows are being selected="+max );
for ( var id = 0; id < max; id++ )
{   
    var row = table.rows[id];   
    var chkbox = row.cells[0].childNodes[0];
 if( null != chkbox && true == chkbox.checked ) 
    {
 console.log("inside the condition that anddeleted id ="+ id);
 table.deleteRow(id); 
    id--;
    }
}

控制台记录不同的浏览器

适用于 fireFox 和 Chrome

没有被选择的行=3

chkbox.checked box的valuer=undefined checkbox=[object Text]的值

chkbox.checked box的valuer=undefined checkbox=[object Text]的值

chkbox.checked box的valuer=undefined checkbox=[object Text]

对于 IE

没有被选择的行=3

chkbox.checked box的valuer=undefined checkbox=[object Text]的值

chkbox.checked box的valuer=undefined checkbox=[object Text]的值

chkbox.checked box的valuer=true checkbox=[object HTMLInputElement]

在anddeleted id =2的条件内

行已删除!

我的问题是为什么 Firefox 无法将第 2 行识别为 [object HTMLInputElement]。 我哪里错了? 请帮忙!

【问题讨论】:

    标签: javascript html google-chrome firefox html-table


    【解决方案1】:

    Firefox 和 Chrome 遵循 W3C 规范;我相信 IE9 的行为是一样的。

    您的代码依赖于 IE\n 的文本节点(即一个换行符后跟四个空格)和一个输入元素。 IE

    此问题的最简单解决方案是使用children[0] 而不是childNodes[0],因为这样会给出第一个Element 子级,而不是第一个子级。

    【讨论】:

    • 我改变了 var chkbox = row.cells[0].childNodes[0];到 var chkbox = table.children[id];但是 chkbox.checked 仍然未定义,请举例说明它在您的情况下是如何工作的,因为我第一次使用这个标签谢谢
    【解决方案2】:

    我找了很多地方,终于找到了这个解决方案

                var chkbox = row.cells[0].childNodes[0];
        var ct =chkbox.nodeValue;
        if(/\n^/m.test(ct)) \\ in FIREFOX it will \n+four space so i put a regexp
        chkbox = row.cells[0].childNodes[1];
    

    现在这个工作非常好,感谢 *gsnedders*谁告诉我背后实际发生的事情。非常感谢 gsnedders

    【讨论】:

      猜你喜欢
      • 2017-10-20
      • 2012-05-05
      • 1970-01-01
      • 2010-09-23
      • 1970-01-01
      • 2011-05-31
      • 2018-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多