与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()); 

你有两个问题:

  1. innerText不受普遍支持。
  2. 除了IE <9(兼容模式下的IE 9)之外的所有浏览器都包含childNodes空白文本节点。 IE没有,所以如果你的

    元素之间有空格, tr.childNodes[3]将引用不同的节点。

我建议修复:

  1. 使用element.textContent || elem.innerText element.textContent || elem.innerText 。 这并不完美,但在大多数情况下都能正常工作。
  2. 看起来你正在尝试获取表格单元格的文本内容。 如果是这样,您可以使用表的cells属性,这通常支持IE 4。

两个修复程序的示例代码:

 var td = e.parentNode.parentNode.cells[3]; var tdText = td.textContent || td.innerText; 

并非所有浏览器都支持innerText,您可以尝试使用jquery或

根据浏览器版本使用.textContent和.innerText