2014-12-20 50 views
0

我不知道爲什麼我不能做到這一點:動態表,變更類和替換值

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

你可以做'變種SSS = table.replace(/一個/克, 'ZZZ'); var aaa = $(sss).find ...'它會起作用。 – Phylogenesis

+1

注意:'aaa'是jQuery對象,您不能將'替換'本地字符串'函數'給它。 –

回答

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

+0

謝謝。我現在明白了。 –

+0

再次感謝,我正要問如何避免吹走其他行。 :) –

1

的原因是$(table)返回一個包含jQuery對象DOM元素,而不是HTML文本,並且此對象正在放入aaa.replace()必須應用於字符串,它不適用於jQuery對象。

可以使用的jQuery .text()方法中的元件以替換文本:

aaa.find("td:contains(one)").text(function(i, oldtext) { 
    return oldtext.replace(/one/g, 'zzz'); 
}); 

$("#output").html(aaa); 
+0

啊,非常感謝。我懂了。 –