Javascript 获取p标记行中的字符数?
我有一些文本,我想把其中的一部分放在Javascript 获取p标记行中的字符数?,javascript,css,Javascript,Css,我有一些文本,我想把其中的一部分放在标记中 HTML: JavaScript: var text=“我的知识产权属于我的知识产权,我的知识产权属于我的知识产权,我的知识产权属于我的知识产权,我的知识产权属于我的知识产权。” var mainTargetP=document.getElementById('mainTargetP'); //mainTargetP.innerHTML=将部分文本转换为P。 标记已指定宽度、高度、字体大小等 我拥有的是一大块文本,我将其划分为固定宽度和高度的段
标记中
HTML:
JavaScript:
var text=“我的知识产权属于我的知识产权,我的知识产权属于我的知识产权,我的知识产权属于我的知识产权,我的知识产权属于我的知识产权。”
var mainTargetP=document.getElementById('mainTargetP');
//mainTargetP.innerHTML=将部分文本转换为P。
标记已指定宽度、高度、字体大小等
我拥有的是一大块文本,我将其划分为固定宽度和高度的段落。我必须弄清楚的是,文本块中有多少文本(多少单词)能很好地放在段落中。假设段落有7行,我想正好放进7行文本。不是6.5行,不是7.5行。可能吗
基本上,我不希望在最后一行留下任何空白,如下所示:
使用某些文本块的临时解决方案:
var charsInLine=63;
变量行=7
var charsintagetp=charInLine*行-20;
var mainTargetP=document.getElementById('mainTargetP');
var s1=text.substring(0,CharsInTargetTP);
变量nextPara=s1.lastIndexOf(“”)
mainTargetP.innerHTML=s1.substring(0,nextPara);
高于我随机取的-20值。有时该值需要为-40
希望我说的很清楚,谢谢。我想到的最直接的方法是暂时将段落的高度设置为
auto
,在其中放入一个字符,测量其高度,然后继续添加字符,直到高度突然增加,表明该段落已换行。然后删除单个字符(或单词,无论什么),直到高度返回其原始值,然后再次设置高度(因为您说过高度已定义)。漂洗,重复以下几行(因为它们不会有相同的字符数,除非您使用固定宽度字体)。下面是基于jQuery的解决方案
HTML:
JS:
var text=“知识产权是一种权利,是一种权利,是一种权利,是一种权利,是一种权利。知识产权是一种权利,是一种权利,是一种权利,是一种权利。”;
//元素,该元素将附加到每个p标记的末尾,并将导致换行
var justify=‘非常长的东西’;
var p=$('.target');
var q=$('”);
q、 css('width',p.width()+'px');
q、 文本(文本);
$(document.body).append(q);
var h=p.高度();
var newText=文本;
对于(变量i=0,j=0;ih){
newText=newText.substr(0,newText.lastIndexOf(“”));
q、 文本(新文本);
}
$(p[i]).html(newText+justify);
j+=新文本长度+1;
newText=text.substr(j);
q、 html(newText);
}
q、 分离();
工作示例:@user161179:除非你在IE上执行数百行操作,否则我不认为会有问题,但唯一确定的方法是在你的目标浏览器上尝试。刚做了,这个解决方案就运行得很好。而且绝对不会影响性能。谢谢,仅仅截断大文本并使用CSS隐藏和传输就足够了吗使用
max height
和text align:justify
将文本设置为适合容器元素?请将相关代码也放在此处,我们不能依赖外部来源。
<p class="target font"></p>
<p class="target font"></p><!-- create as many tags as many pages you want -->
.target {
width: 200px;
height: 100px;
border: 1px solid black;
overflow: hidden;
}
.font {
font-size: 12pt;
text-align: justify
}
var text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. a a a Nullam nec magna eu dui pharetra bibendum. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean at urna mi.";
// element which will be appended to the end of each p tag and will cause line break
var justify = ' <span style="visibility:hidden;">something_very_very_very_long</span>';
var p = $('.target');
var q = $('<p class="font"></p>"');
q.css('width', p.width() + 'px');
q.text(text);
$(document.body).append(q);
var h = p.height();
var newText = text;
for (var i = 0, j = 0; i < p.length; ++i) {
while (q.height() > h) {
newText = newText.substr(0, newText.lastIndexOf(' '));
q.text(newText);
}
$(p[i]).html(newText + justify);
j += newText.length + 1;
newText = text.substr(j);
q.html(newText);
}
q.detach();