Javascript代码在IE中表现正常,在firefox中表现不正常
我需要一个关于我的错误的澄清 我的要求是使用javascript动态获取UI中使用的html标记名。我的代码在IE中执行,但在Mozila Firefox中不合适。 我的代码 HTML代码:Javascript代码在IE中表现正常,在firefox中表现不正常,javascript,Javascript,我需要一个关于我的错误的澄清 我的要求是使用javascript动态获取UI中使用的html标记名。我的代码在IE中执行,但在Mozila Firefox中不合适。 我的代码 HTML代码: <table> <tr> <td> <input type="text" /> </td> <td> <select> <option>p_st
<table>
<tr>
<td>
<input type="text" />
</td>
<td>
<select>
<option>p_string1</option>
<option>p_string5</option>
</select>
</td>
</tr>
</table>
p_string1
p_string5
JS:
for(i=0;i
我得到的是值
#text
,而不是标签名Select
。但是正确地获取标记名INPUT
。我认为这是因为firefox(正确地)选择了第一个子节点,即空格。如果删除和之间的所有空白,可能会得到正确的标记
编辑,如下所示:
<td><input
希望这有帮助。使用标记名和firstChild元素属性:
var cells=table.getElementsByTagName('td');
对于(i=0;i
请注意,有些浏览器注意到换行和制表是作为TextNodes,没有标记名,因为我们在childnodes中循环搜索定义的标记名属性。
我更新了位于的示例,如果您可以修改标记,则最好通过ID而不是td childnodes引用对象。我建议在输入上添加一个id,然后引用thatya,但我是用泛型编写代码的,因为实际的问题是使用用户在UI中定义的表的默认格式向现有表追加一个新行。。因此,一般来说,我更喜欢获取特定表的'td'标记的childnodes,而不是使用'id'<代码>表.getElementsByTagName('td')[i].childNodes[0]。标记名也不工作。。“#text”在这种情况下意味着什么?不客气,如果你不介意的话,我会给出一个更完整的答案…:)但是,我只是缩进html标记,没有其他额外的空格。。它是否也会产生同样的问题..由于@Exelian comments text节点可能会导致结果错误,我在更新了我的解决方案
<td><input
var inner_tags = document.querySelectorAll('td > *')
var first_tag = inner_tags[0].tagName;
var cells = table.getElementsByTagName('td');
for (i = 0; i < table.rows[0].cells.length; i++)
{
var cell = cells[i];
if ( cell && cell.firstChild) {
result = null;
for ( position in cell.childNodes){
if (! result) result = cell.childNodes[position].tagName;
}
pNode[i] = result;
}
}