【发布时间】:2018-03-06 19:18:49
【问题描述】:
我有以下功能:
// Change nav item in header in order to display it shorter
function toggleInnerHtml(){
$('#header .top ul li span, .banner nav.company li a span').each(function(index, value){
var nav_item_text = value.innerHTML;
for (i = 0; i < nav_item_text.length; i++) {
if(nav_item_text == 'Häufig gestellte Fragen (FAQ) - Übersicht' ){
nav_item_text = 'FAQ';
this.innerHTML = nav_item_text;
}
}
});
}
toggleInnerHtml();
该功能进入我的页面标题并将菜单项的名称“Häufig gestellte Fragen (FAQ) - Übersicht”更改为“FAQ”。但是,此功能运行速度太慢,因此“Häufig gestellte Fragen (FAQ) - Übersicht”总是出现在“FAQ”出现之前。
有没有办法优化我的功能,使这个错误不再发生?不幸的是,我必须以这种方式解决它,因为我的 CMS 根据 CMS 中的页面名称生成菜单项。
【问题讨论】:
-
在加载文档时总是会出现文本闪烁,你应该先用 css 隐藏它,然后在你的 js 完成文本更改后取消隐藏它。你能不能不编辑你的 cms 所以它有一个额外的菜单名称字段 - 这是大多数 cms 系统所做的
-
你没有使用for循环中的
i,所以你可以省略这行for (i = 0; i < nav_item_text.length; i++) { -
哇,您正在迭代字符串
nav_item_text的所有字符,并在每次迭代时设置元素的innerHTML...为什么要这样做?只需删除此 for 循环,您就会变得更好。 -
非常感谢您的建议。我也终于注意到了不必要的 for 循环。我已经删除了循环,现在它运行得更快了。但是仍然不如预期(见下面的 cmets)。
标签: javascript jquery performance