2015-05-08 133 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()