2015-05-08 130 views
2

我想從下面的HTML代碼用下面的代碼刪除最後一個字符JS切片()不能正常工作

<tbody><tr><tr>1<td><label for='depart1'>Department 1</label><br /><input type='text' id='depart1' class='textbox large' value='IT' /><br><label for='Courses_for_depart1'>Course for Department 1</label><br /><textarea id='Courses_for_depart1' class='textarea large' >OS</textarea></td></tr></tbody> 

addHtml.slice(0,-13); 

應該刪除</tr></tbody>但它刪除只有></tbody>

如何擺脫這種奇怪的行爲。

更新
addHtml=$("#departments").html(); 

<table id="departments"> 
        <tbody><tr><tr>1<td><label for='depart1'>Department 1</label><br /><input type='text' id='depart1' class='textbox large' value='IT' /><br><label for='Courses_for_depart1'>Course for Department 1</label><br /><textarea id='Courses_for_depart1' class='textarea large' >OS</textarea></td></tr></tbody>    </table> 

上述片段被複制的鉻形式視圖源代碼。

+1

無法重現該問題。它爲我刪除了''。 – thefourtheye

+1

什麼存儲在'addHTML'中。如何定義addHTML? – bugwheels94

+0

.slice或.splice? http://prntscr.com/72yaed .splice只適用於數組。 – briosheje

回答

1

可能有白色關閉</tbody>標記和</tr>標記之間的空間。嘗試是這樣的:

addHtml = addHtml.trim(); 
var tbody = '</tbody>'; 
var t1 = addHtml.indexOf(tbody)+tbody.length; 
var t2 = addHtml.lastIndexOf('</tr>'); 
var len = t1-t2; 
var newString = addHtml.slice(0,-len); // This will have the string without the </tr> </tbody> 
1

由於您的addHTML包含結束和開始的空間,所以你需要修剪在啓動所有的空間和使用切片功能之前結束所以使用

$.trim(addHtml).slice(0,-13); 

Working demo

1

這樣可能更安全的替代,你可以在兩個步驟做到這一點:
1)找到字符串中的最後</tbody>,然後切片到它。
2)找到剩餘字符串中的最後一個</tr>,然後切片。
String.prototype.lastIndexOf()