jquery在表中选择tr的第一个td,然后遍历调查结果并将文本与值进行比较

时间:2015-04-29 10:28:39

标签: javascript jquery html

有一个像这样的表:

<table id="table_1">
<tr><td>1</td><td>foo</td></tr>
<tr><td>2</td><td>foo</td></tr>
<tr><td>3</td><td>foo</td></tr>
<tr><td>4</td><td>foo</td></tr>
</table>

我想获得每个表行的第一个td。 然后我想迭代调查结果,并将td中包含的文本值与我拥有的值进行比较。

到目前为止,我可以使用以下内容获得每个tr的第一个td:

var test = $("#table_1").find('td:first-child');

然后我得到tds的数量:console.log(test.length); 但当我尝试获取td的文本时,我收到错误:console.log(test[1].text()); 错误:

Uncaught TypeError: test[1].text is not a function

显然我做错了什么。我的思维方式错了吗?我该如何解决?

6 个答案:

答案 0 :(得分:2)

test是所有第一个子元素的jquery对象。您应该使用.eq(0).first()来定位集合中的第一个元素:

 console.log(test.eq(0).text());

 console.log(test.first().text());

更新:获取数组中第一个子td元素的所有文本

 var allfirsttdtext = test.map(function(){
     return $(this).text();
 }).get();

<强> Working Demo

答案 1 :(得分:0)

test[1]将返回底层DOM元素,而.text()是一个jQuery函数,因此您将收到错误。

我认为,您需要使用.eq()

  

将匹配元素集合减少到指定索引处的元素。

代码

test.eq(0).text()

注意:提供的索引是从零开始的,并且是指jQuery对象中元素的位置,而不是DOM树中的位置。

,使用textContent

test[1].textContent

答案 2 :(得分:0)

在JavaScript中使用 textContent bcoz你正在将jquery对象转换为javascript对象

console.log(test.eq(0).text());

或     console.log(test[0].textContent);

答案 3 :(得分:0)

你必须用jQuery包围,因为结果数组是一个Dom Elements:

for(i = 0; i < test.length; i++){
  console.log($(test[i]).text())
}

答案 4 :(得分:0)

试试这个:

var v = 'compare';

 $('#table_1 td').each(function () {
       if ($(this).text() == v)
       console.log($(this).text()+' is equal with the variable '+v);
    })

答案 5 :(得分:0)

console.log(test[1].text());

测试 - &gt;是一个htmlDomElement数组 当你说test[1] ->它给你一个htmlElement而不是该元素的jQuery对象时,所以你不能使用jQuery函数的.text()

$(test[1]).text()包裹它以使jQuery对象在其上使用text()函数。