我正在尝试创建三个数组,并使用从tr的每个子元素收集的特定信息填充它们。
我继续收到语法错误,但是当我用一个数字替换子元素时,下面的代码工作正常(它只是用相同的字符串填充整个数组)。
我已经坚持了一段时间,所以任何语法帮助都会非常感激!我是以正确的方式接近这个吗?
var str = new Array ();
for (i =1; i<=5; i++){
str[i] = $("tr:nth-child(i+2) > td.short-desc > a > div > div.col-lg-5.col- sm-6.hidden-xs > div.pull-left > div > div:nth-child(2) > img ").attr('src')
}
var pos = new Array ();
for (i=1; i<=5; i++){
pos[i] = str[i+2].search("traveler/");
}
var rating = new Array ();
for (i=1; i<=5; i++){
rating[i] = str[i+2].substring(pos[i+2]+ 9, pos[i+2] +12);
}
答案 0 :(得分:2)
jQuery选择器无法访问周围的上下文,因此他们无法看到变量i
。您有两种选择:
计算循环中的值,然后将结果传递给jQuery:$("tr:nth-child(" + (i+2) + ") > ..."
获取<tr>
个元素的列表,迭代它们,然后在每个元素上使用选择器。
第二种解决方案如下:
var rows = $('<tr>'); // get all rows as array
for( i=1; i<=5; i++) {
// search a child of a certain row
$("td.short-desc > a > div > ...", rows[i+2]);
}