像这样的 div 元素中有一些文本
div{ 宽度:100px; 溢出:隐藏;高度:20px;}
现在,我只想获取可见文本的长度,而不是 div 元素的整个文本。
我怎样才能做到这一点...
谢谢
为什么不将文本框限制为否。输入的字符数。您访问一个演示,您可以在其中检查编号。输入的字符数并加以限制单击此处 您可以实施相同的功能并将其用于您的目的。
我发现这个问题很有趣,所以我设计了一种有效测量可见文本字符长度的方法。
你可以在那里测试它:http: //jsfiddle.net/6nYFb/
这个想法是迭代地填充文本,直到达到 100px 宽度。
CSS:
#txt{ max-width:100px; overflow:hidden;height:20px;}
HTML:
<span id=txt>My long text is long. My long text.My long text. My long text... My long text. My long text, so long...</span>
<br>Nb chars : <span id=mes></span>
JS:
var text = $('#txt').text();
var nbchars = 0;
$('#txt').html('');
var increment = function() {
$('#txt').html(text.substring(0, nbchars));
if (nbchars<text.length-1 && $('#txt').width()<100) {
nbchars++;
window.setTimeout(increment, 1);
} else {
$('#mes').html(nbchars);
}
};
window.setTimeout(increment, 1);
当然,最好不要过度使用这种解决方案,但我没有看到没有画布更直接的东西。它有效。
另一个(不太兼容的)解决方案可能是使用内存画布而不是修改 DOM,但是在 css 中定义的某些文本转换(或:之前)可能难以重现......