Javascript 返回textNode的上一个同级节点?希望它返回一个元素

Javascript 返回textNode的上一个同级节点?希望它返回一个元素,javascript,jquery,dom,Javascript,Jquery,Dom,小提琴的基本解释是:当有人开始在单元格中键入内容,然后用制表符移开或取消对焦时,它会在单元格上方创建一个新行,清空底部一行,并将焦点移动到该新行中的“下一个”输入元素。它是不完整的,但足够孤立以显示问题行为 因此,我很难理解为什么在通过parentElement调用进入元素之后,我试图通过上一个兄弟姐妹。上一个兄弟姐妹进入两行。它命中一个文本节点,因此我无法引用子元素。我错过了什么 由于我必须支持IE8,因此无法使用以前的元素同级 代码: # 删除 位置 条形码 萨姆努克 地位 1. 删除 有

小提琴的基本解释是:当有人开始在单元格中键入内容,然后用制表符移开或取消对焦时,它会在单元格上方创建一个新行,清空底部一行,并将焦点移动到该新行中的“下一个”输入元素。它是不完整的,但足够孤立以显示问题行为

因此,我很难理解为什么在通过parentElement调用进入
元素之后,我试图通过
上一个兄弟姐妹。上一个兄弟姐妹
进入两行。它命中一个文本节点,因此我无法引用子
元素。我错过了什么

由于我必须支持IE8,因此无法使用以前的元素同级

代码:


#
删除
位置
条形码
萨姆努克
地位
1.
删除
有效的
新纪录
JS:

add_new_rec=函数(obj){
var-trait_-arr=[1,2,3];
变量$tbody=$(“#lab-request-data_entry-table tbody”);
var$erow=$(obj.parent().parent();//条目行。
var indexCol=$erow.find('td').index($(obj.parent());//它是索引。
var colCount=$(obj).parent().parent().find('td').length-3;//要插入的数据输入列。数字、删除和状态减去3
var rowLen=$tbody.find(“tr”).length;
var row_Upper=rowLen>1?真:假;
如果($.trim(对象值)=''){
返回;
}
var rowInfo='';
行信息='Delete';
$erow.('')之前;
$erow.prev().append(“”+(rowLen)+“”+rowInfo+“”);
//现在遍历列,如果不是obj的位置,则添加上一个值
对于(变量i=0;i
previousSibling
是以前的同级节点,它可能不是一个元素。这就是jQuery存在的原因之一:DOM API是一个真正的难题。(如今,在现代浏览器上,我们有类似于
previousElementSibling
的东西。但我们没有回到创建jQuery的时候。)

添加新行后,可以使用

$(obj).closest("tr").prev().prev()

…在新行之前获取行。我可能会在循环复制单元格值之前执行一次,而不是在循环中重复执行。

previousSibling
是前一个同级节点,它可能不是元素。这是jQuery存在的原因之一:DOM API是一个真正的难题。(如今,在现代浏览器上,我们有了类似于
previousElementSibling
的东西,但我们没有回到jQuery创建时。)

添加新行后,可以使用

$(obj).closest("tr").prev().prev()

…在新行之前获取行。我可能会在循环复制单元格值之前执行一次,而不是在循环中重复执行。

previousSibling
是前一个同级节点,它可能不是元素。这是jQuery存在的原因之一:DOM API是一个真正的难题。(如今,在现代浏览器上,我们有了类似于
previousElementSibling
的东西,但我们没有回到jQuery创建时。)

添加新行后,可以使用

$(obj).closest("tr").prev().prev()

…在新行之前获取行。我可能会在循环复制单元格值之前执行一次,而不是在循环中重复执行。

previousSibling
是前一个同级节点,它可能不是元素。这是jQuery存在的原因之一:DOM API是一个真正的难题。(如今,在现代浏览器上,我们有了类似于
previousElementSibling
的东西,但我们没有回到jQuery创建时。)

添加新行后,可以使用

$(obj).closest("tr").prev().prev()

…在新行之前获取行。在循环向下复制单元格值之前,我可能会这样做一次,而不是在循环中重复。

在tr处,使用
tr.cells[indexNumber]
按位置命中行中的任何单元格。可能类似于
td.parentNode.parentNode.rows[td.parentNode.rowIndex-1]单元格[td.cellIndex]
您可能需要一个额外的parentNode来处理tbody…我正试图获取上面单元格的值并将其复制到新行中。这是一个功能请求。当我执行到该点时,已经有一行完成了一半,所以我必须增加两行,而不是一行。@Orpheus:是的,在您添加之后,我错过了这一行一行。其中有一个
previousElementSibling
helper函数,可以帮助您解决这个问题,同时保持与旧浏览器的兼容性。@PaulRoub:是的,但他们已经在使用jQuery,所以…在tr中使用
tr.cells[indexNumber]
按位置命中行中的任何单元格。可能类似于
td.parentNode.parentNode.rows[td.parentNode.rowIndex-1]。单元格[t