Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用JQuery从表中选择最后一个单元格的前一个非空同级_Javascript_Jquery_Html_Html Table_Siblings - Fatal编程技术网

Javascript 如何使用JQuery从表中选择最后一个单元格的前一个非空同级

Javascript 如何使用JQuery从表中选择最后一个单元格的前一个非空同级,javascript,jquery,html,html-table,siblings,Javascript,Jquery,Html,Html Table,Siblings,我有一个包含以下行和单元格的表: <table id='table1'> <tr id='row1'> <th>index</th> <th>Product</th> <th>Description</th> </tr> <tr id='row2' name='row'> <td name='index'>1</td

我有一个包含以下行和单元格的表:

<table id='table1'>
  <tr id='row1'>
    <th>index</th>
    <th>Product</th>
    <th>Description</th>
  </tr>
  <tr id='row2' name='row'>
    <td name='index'>1</td>
    <td name='product'>Apples</td>
    <td name='description'>fruits</td>
  </tr>
  <tr id='row3' name='row'>
    <td name='index'>2</td>
    <td name='product'>Bananas</td>
    <td name='description'>fruits</td>
  </tr>
  <tr id='row4' name='row'>
    <td name='index'>3</td>
    <td name='product'>Carrots</td>
    <td name='description'>vegetables</td>
  </tr>
  <tr id='row5' name='row'>
    <td name='index'>4</td>
    <td name='product'></td>
    <td name='description'></td>
  </tr>
</table>
而且 以前的方法

var lastrow=$('td[name=product]:not(:empty):last').prev().html()


但我无法获得last
tr
的索引号,因为它的产品标题中没有数据。换句话说,我无法在
tr
中使用
name=index
获取
td
,而
td
中使用
name=product
没有任何数据。有人知道我做错了什么,或者我如何才能实现我所追求的吗

找到非空单元格并从中选择上一个单元格:

var lastCellBeforeCellWithNoData=$('td[name=product]:not(:empty):last').prev('name=index');
log(lastCellBeforeCellWithNoData.html())

指数
产品
描述
1.
苹果
果实
2.
香蕉
果实
3.
胡萝卜
蔬菜
4.

如果要获取
tr
索引,请使用此

var trIndex = $('td[name=product]:empty').parent().index();
否则,如果要选择
name=“index”
则使用此选项

var nameIndex = $('td[name=product]:empty').prev();
var trIndex=$('td[name=product]:空').parent().index();
var nameIndex=$('td[name=product]:空').prev().text();
log('Tr Index->'+trIndex',name=“Index->'+nameIndex)

指数
产品
描述
1.
苹果
果实
2.
香蕉
果实
3.
胡萝卜
蔬菜
4.

在花了一些时间理解您的问题之后,我认为您正在尝试完成以下任务:返回最后一个单元格的索引,其中“Product”列不是空的(注意,请尽量不要将其描述为NULL,因为它是db存储的一个非常特定的术语)。另外,我认为如果您可以使用其他语言(如PHP)来比较检索到的值是否为NULL(因为NULL不同于空格“”,那么最好看看前面的讨论)

然而,为了实现您想要实现的目标,我编写了一个简短的代码,如下所示

var tr = $('#table1 tr');
var index = 0;
for(i = tr.length - 1; i > 0; i--) {
  if($(tr[i]).find('td:eq(1)').html() != "")  {
    index = i;
    break;
  }
}
console.log(index);
基本上,它会找到表的tr并逐行比较,以检查第二列
td:eq(1)
,查看原始HTML值是否为空(抱歉,但我想再次强调,这不是一个很好的比较方法)并返回值

我没有根据性能优化代码,但我认为它应该足以实现您想要做的事情

希望这有帮助


关于。

我不明白,你说你在寻找a
tr
的索引,但是你的选择器只在寻找
td
s。一个
td
的兄弟将是另一个
td
。您要找的是
td
还是
tr
?如果你想要一个
tr
它将是
td
的父级
,而不是
兄弟级
,请简化你的问题陈述。@chiliNUT她想要的是在产品单元格之前的索引单元格中的值,因为它也不起作用。除此之外,我首先在相应的
tr
中查看
td
,它在
product=name
`td`中没有任何价值。再次编辑-我想在重新阅读问题后,我理解了您现在要查找的内容。:)
var tr = $('#table1 tr');
var index = 0;
for(i = tr.length - 1; i > 0; i--) {
  if($(tr[i]).find('td:eq(1)').html() != "")  {
    index = i;
    break;
  }
}
console.log(index);