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小于特定高度
这听起来像是行夹:基本上这是一个分页问题,但这种特殊的分页方式太笨重,无法单独按段落(可能是半页或两行)拆分内容。