我想知道为什么我不能这样做:
var table = '<table>';
for (var i=0; i<15; i++) {
table += '<tr>';
table += '<td>one</td>';
table += '<td>two</td>';
table += '<td>three</td>';
table += '<td>four</td>';
table += '<td>five</td>';
table += '<td>six</td>';
table += '<td>seven</td>';
table += '<td>eight</td>';
table += '</tr>';
}
table += '</table>';
var aaa = $(table).find('tr:first td').addClass('firstrow');
var sss = aaa.replace(/one/g, 'zzz');
$('#output').html(sss);
我似乎无法将两者组合在一行中,但我可以执行查找和添加类或替换,但不能同时执行。救命。 JSFIDDLE
答案 0 :(得分:1)
问题是aaa
是一个jQuery对象,没有.replace()
方法。根据我的评论,您可以按如下方式重新排列两行:
var table = '<table>';
for (var i=0; i<15; i++) {
table += '<tr>';
table += '<td>one</td>';
table += '<td>two</td>';
table += '<td>three</td>';
table += '<td>four</td>';
table += '<td>five</td>';
table += '<td>six</td>';
table += '<td>seven</td>';
table += '<td>eight</td>';
table += '</tr>';
}
table += '</table>';
var sss = table.replace(/one/g, 'zzz');
$('#output').html(sss).find('tr:first td').addClass('firstrow');
编辑:更改了代码,以便将所有15行追加到#output
答案 1 :(得分:1)
原因是$(table)
返回包含DOM元素的jQuery对象,而不是HTML文本,并且此对象放在aaa
中。 .replace()
必须应用于字符串,它不适用于jQuery对象。
您可以使用jQuery .text()
方法替换元素中的文本:
aaa.find("td:contains(one)").text(function(i, oldtext) {
return oldtext.replace(/one/g, 'zzz');
});
$("#output").html(aaa);