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

时间:2015-05-18 20:14:08

标签: javascript jquery html

观察以下现象:

<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小于特定高度。

1 个答案:

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

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