gpt4 book ai didi

javascript - 传递整数时 chop 宽度函数不起作用

转载 作者:行者123 更新时间:2023-11-28 03:01:03 24 4
gpt4 key购买 nike

我正在尝试创建一个通用函数,我可以从多个位置调用它来递归地 chop 长文本以适应预定义的像素宽度 - 使用 jquery。

这是代码...

function constrain(text, original, ideal_width){

var ideal = parseInt(ideal_width);

$('span.temp_item').remove();
var temp_item = ('<span class="temp_item" style="display:none">'+ text +'</span>');
var item_length = text.length;
$(temp_item).appendTo('body');
var item_width = $('span.temp_item').width();

if (item_width > ideal) {
var smaller_text = text.substr(0, (item_length-1));
return constrain(smaller_text, original);
} else if (item_length != original) {
return (text + '&hellip;');
} else if (item_length == original) {
return text;
}
}

如果我像这样运行该函数:

    $('.service_link span:odd').each(function(){
var item_text = $(this).text();
var original_length = item_text.length;
var constrained = constrain(item_text, original_length,'175');
$(this).html(constrained);
});

文本不会被 chop 。我还尝试了不带引号的 175。

如果我定义 var Ideal = 175;在函数内部,然后它就可以工作了。为什么将 175 传递给函数不起作用?我对它做了一个 parseInt,以防它是一个字符串。

另外 - 这个 chop 代码在旧机器上运行有点慢 - 有什么加快速度的技巧吗?

谢谢!

最佳答案

这里有很棒的东西。我使用了 Phil Carter 的函数。我只是希望带有 &hellip 的新字符串以与其余字符串相同的宽度被 chop 。

我刚刚快速添加了另一个临时宽度查找和递归调用。可以使用一些清理,但它有效。这是新的 while:

while(item_width > ideal) {                     
var smaller_text = text.substr(0, (item_length-1));
return constrain(smaller_text, original, ideal_width, counter);
}

if (item_length != original) {
new_text=text+'&hellip;';
$('span.temp_item').remove();
var temp_item = ('<span class="temp_item" style="display:none">'+ new_text +'</span>');
$(temp_item).appendTo('body');
var item_width_new = $('span.temp_item').width();
if(item_width_new>ideal){
var smaller_text = text.substr(0, (item_length-1));
return constrain(smaller_text, original, ideal_width, counter);
}
else {
return new_text;
}
} else if (item_length == original) {
return text;
}
}

关于javascript - 传递整数时 chop 宽度函数不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/895381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com