JS Slice()无法正常工作

时间:2015-05-08 15:46:25

标签: javascript jquery html

我正在尝试删除以下html代码中的最后一个字符

<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>

上面的代码片段是复制形式的chrome视图源代码。

3 个答案:

答案 0 :(得分:1)

由于你的addHTML在结尾和开头都包含空格,所以你需要在使用切片函数之前在开始和结束时修剪所有空格,所以使用

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

Working demo

答案 1 :(得分: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>

答案 2 :(得分:1)

作为一种可能更安全的替代方案,您可以分两步完成: 1)找到字符串中的最后一个</tbody>,然后切片到它 2)找到剩余字符串中的最后一个</tr>,然后切片到该字符串 String.prototype.lastIndexOf()