2014-02-12 44 views
0

我有一段代碼複製了<table>,但在過程中更改了id。花了幾個小時,但我最終得到了這個與發生:Replace()只能用於代碼的一個配置

var lookFor = 'url' + parseInt(uploadCount); 
++uploadCount; //used to create a unique id 
var replaceWith = 'url'+parseInt(uploadCount); 
var regex = new RegExp(lookFor, 'g'); 
var tableHTML = '<table class="user-url-table" style="opacity:0;" id="url' + uploadCount + '">' + $('table.user-url-table').first().html().replace(regex, replaceWith) + '</table>'; 
$(tableHTML).insertAfter($('table.user-url-table').last()); 

但是,下面不工作:

var lookFor = 'url' + parseInt(uploadCount); 
var tableHTML = '<table class="user-url-table" style="opacity:0;" id="url' + uploadCount + '">' + $('table.user-url-table').first().html() + '</table>'; 
++uploadCount; 
var replaceWith = 'url'+parseInt(uploadCount); 
var regex = new RegExp(lookFor, 'g'); 
tableHTML = $('table.user-url-table').first().html().replace(regex, replaceWith); 

但不宜他們做相同的工作....?第一段代碼肯定只是在一行中完成所有事情,而第二段代碼則形成<table>,然後更改其中的所有id實例。

+1

你能建立一個演示是爲了說明什麼,這些表中的一個什麼樣子的?看起來你正在努力做到這一點。 – Mathletics

+0

http://jsfiddle.net/PdSTP/1/這個想法是,用戶輸入一個url,textarea上的'blur()'事件對ajax調用一個php腳本,該腳本根據url或是否有效 - 這是使用唯一標識的地方。頁面上有一個加號圖標,允許用戶添加更多的url條目,這就是調用上面的代碼。我只使用表格進行格式化。 – Todd

+1

爲什麼你在多個元素上有相同的ID? – Mathletics

回答

1

第二個代碼有兩個錯誤。首先,當你在最後一行做tableHTML = $('table.user-url-table').first().html().replace(regex, replaceWith);時,你扔掉了你所做的準備。您覆蓋tableHTML的值。

第二個錯誤是結果不會附加到文檔中,就像您在第一個代碼中使用insertAfter一樣。

爲了使工作,取代最後一行$('table.user-url-table').after(tableHTML.replace(regex, replaceWith));。這將插入tableHTML與替換的ID的after第一個表。

的另一種方式,更簡單的做同樣的事情是這樣的:

var firstTable = $("#url1 tbody").html(); 
var result = ""; 
for (i = 2; i < 10; i++) { 
    result += '<table class="user-url-table" style="opacity:0.2;" id="url' 
       + i + '">' + firstTable.replace("url1", "url" + i) + '</table>'; 
} 
$("#url1").after(result); 

小提琴:http://jsfiddle.net/bortao/ydEPr/

+0

謝謝ariel和大家。小學生在我的代碼錯誤。我責備太多咖啡因。 – Todd