Javascript 而循环不';t工作不正常-it';他有时跳绳

Javascript 而循环不';t工作不正常-it';他有时跳绳,javascript,jquery,while-loop,Javascript,Jquery,While Loop,简单while循环无法正常工作。 我写了一个脚本,将文本限制为3行。这很简单。我检查元素的高度(div)是否大于3行(硬编码字体大小和行高),如果大于3行,则删除最后一个单词并添加省略号。我这样做的时候,绳子很短,可以放在三条线上 它是随机工作的,有时有效,有时无效。如果不工作,我只有一个字在第四行。因此,它只跳过最后的迭代,而不是每次 $('div.prod-description').each(function(){ var obj = $(this); if(obj.he

简单while循环无法正常工作。 我写了一个脚本,将文本限制为3行。这很简单。我检查元素的高度(div)是否大于3行(硬编码字体大小和行高),如果大于3行,则删除最后一个单词并添加省略号。我这样做的时候,绳子很短,可以放在三条线上

它是随机工作的,有时有效,有时无效。如果不工作,我只有一个字在第四行。因此,它只跳过最后的迭代,而不是每次

$('div.prod-description').each(function(){
    var obj = $(this);

    if(obj.height() > 60) { // line-height: 18px;
        var ellipses = '...';
        var new_text = null;
        while(obj.height() > 60) {
            new_text = obj.text().slice(0, obj.text().lastIndexOf(' '));
            obj.text(new_text+ellipses);
        }
    }
});
我试图删除
if语句
,我尝试了
do while语句
,但都是一样的


编辑:我发现了问题!但我不知道如何修复它。如果我在浏览器的地址栏上按回车键,或者从菜单进入页面,它就会正常工作。如果我使用
F5
刷新,它将跳过上一次迭代。有什么想法吗?

在我幸运地发现脚本无法正常工作后,我找到了解决方案,只是用F5刷新页面。

要更正此问题,请使用:

$(window).load(function() {});
而不是:

$(document).ready(function() {});

你知道你只需要css就可以做到这一点
div{overflow:hidden;height:60px;text overflow:省略号;white space:nowrap;}
它确实能按预期工作(至少在while部分),我发现您的问题是它有3行,结果有时有4行,这很奇怪。我如何在多行文本上使用
text overflow:省略号
?它应该是跨浏览器的。