与e.parentNode.parentNode.childNodes .innerText的Jquery等效/浏览器兼容性;
我正在使用以下代码段来更新表中的某些文本框值。
ProjectName Block .WorkProgressMilestone Completion Edit ..
function EditWorkDetails(e) { document.getElementById("txtCompletion").value = e.parentNode.parentNode.childNodes[3].innerText; }
它在IE中适用于我,但在其他浏览器(Chrome)中无效。 值得注意的是,表’td’和’tr’没有Id属性来区分对方。 所以我不能在这里使用jquery。 我可以遵循的替代方案是使其适用于所有浏览器。
试试这个:
document.getElementById("txtCompletion").value = $(this).parent().parent().children()[3].html();
要么
$("txtCompletion").val($(this).parent().parent().children()[3].html());
你有两个问题:
-
innerText
不受普遍支持。 - 除了IE <9(兼容模式下的IE 9)之外的所有浏览器都包含
childNodes
空白文本节点。 IE没有,所以如果你的tr.childNodes[3]
将引用不同的节点。
我建议修复:
- 使用
element.textContent || elem.innerText
element.textContent || elem.innerText
。 这并不完美,但在大多数情况下都能正常工作。 - 看起来你正在尝试获取表格单元格的文本内容。 如果是这样,您可以使用表的
cells
属性,这通常支持IE 4。
两个修复程序的示例代码:
var td = e.parentNode.parentNode.cells[3]; var tdText = td.textContent || td.innerText;
并非所有浏览器都支持innerText,您可以尝试使用jquery或
根据浏览器版本使用.textContent和.innerText