观察以下现象:
<div id="testdiv"><p>test text test one two three</p></div>
var i = 1;
var left_over;
while (i < 4) {
i++;
var last_index = $("#testdiv").html().lastIndexOf(' ');
left_over = $("#testdiv").html().substring(last_index).concat(left_over);
$("#testdiv").html( $("#testdiv").html().substring(0, last_index) );
}
console.log($("#testdiv").html()); // <p>test text test</p>
console.log(left_over); // one</p> two</p> three</p>undefined
每次对.html()
的结果进行子字符串处理时,实际上都不会删除html标记。在大多数情况下可能有用。
观察left_over的后果。我几乎没有能力找到p标签最初结束的位置。在我的情况下,使用i和b标签时更是一个问题。也是一个神秘但但问题较少的未定义的外观。
有没有一种很好的方法可以让标签不重复,而不会将html()
的结果转换为正确的字符串?我需要从实际代码中获取div中的字符串,因为我的while循环从div中一次删除一个单词,直到div小于特定高度。
答案 0 :(得分:0)
var i = 1;
var left_over;
var text_left_over;
var text = '' + $("#testdiv").html();
while (i < 4) {
i++;
var last_index = $("#testdiv").html().lastIndexOf(' ');
text_last_index = text.lastIndexOf(' ');
left_over = $("#testdiv").html().substring(last_index).concat(left_over);
text_left_over = text.substring(last_index).concat(text_left_over);
$("#testdiv").html( $("#testdiv").html().substring(0, last_index) );
text = text.substring(0, text_last_index);
}
console.log($("#testdiv").html());
console.log(left_over);
console.log(text); // <p>test text test
console.log(text_left_over); // one two three</p>undefined
我想我可以加倍代码,但感觉非常难看。也许这就是我必须要做的事情。