Javascript 如何获得html()结果的正确子字符串;意外影响

Javascript 如何获得html()结果的正确子字符串;意外影响,javascript,jquery,html,Javascript,Jquery,Html,观察以下现象: <div id="testdiv"><p>test text test one two three</p></div> 测试文本测试一二三 var i=1; 剩余价值; 而(i

观察以下现象:

<div id="testdiv"><p>test text test one two three</p></div>
测试文本测试一二三

var i=1;
剩余价值;
而(i<4){
i++;
var last_index=$(“#testdiv”).html().lastIndexOf(“”);
左上方=$(“#testdiv”).html().substring(最后一个索引).concat(左上方);
$(“#testdiv”).html($(“#testdiv”).html().substring(0,最后一个索引));
}
console.log($(“#testdiv”).html());// 测试文本测试

console.log(左上方);//一个

两个

三个

未定义
每次对
.html()
的结果进行子串时,实际上并没有删除html标记。在大多数情况下可能有用

观察左舷的后果。我几乎没有能力找出p标签最初的结束位置。在我的例子中,当使用i和b标签时,问题更大。还有一种神秘但问题较少的未定义外观

有没有一种好方法可以让标记不重复,而不将
html()
的结果转换为正确的字符串?我需要从实际代码中的div中获取字符串,因为我的while循环一次从div中删除一个单词,直到div小于特定高度。

var I=1;
  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
剩余价值; var text_left_over; var text=''+$(“#testdiv”).html(); 而(i<4){ i++; var last_index=$(“#testdiv”).html().lastIndexOf(“”); text\u last\u index=text.lastIndexOf(“”); 左上方=$(“#testdiv”).html().substring(最后一个索引).concat(左上方); text\u left\u over=text.substring(最后一个索引).concat(text\u left\u over); $(“#testdiv”).html($(“#testdiv”).html().substring(0,最后一个索引)); text=text.substring(0,text\u last\u索引); } log($(“#testdiv”).html()); 控制台日志(左上方); console.log(文本);// 测试文本测试 console.log(文本_left _over);//一二三

未定义

我想我可以把代码翻一倍,但感觉非常难看。也许这就是我必须要做的。

一个建议:也许你的内容不允许这样做,但如果你只针对实际内容,而不是html,你可以使用child的文本。所以你没有弄乱标签。像这样的$(“#testdiv”).children('p').text()。听起来像是XY问题。你为什么要这么做
因为我的while循环一次从div中删除一个单词,直到div小于特定高度
这听起来像是行夹:基本上这是一个分页问题,但这种特殊的分页方式太笨重,无法单独按段落(可能是半页或两行)拆分内容。