我正在制作一个插件,如果篇幅太长,我可以缩短论坛索引中每个条目的标题。然而,这比我预期的要困难得多。
一切都很顺利,除非我到达你实际需要将项目打印到DOM上的部分。
我收到此错误:
Uncaught TypeError: undefined is not a function
这是我的代码,其中包含一些笔记,我向您展示它是如何工作的。
var minimize = function() {
$('.segment').each(function(){
var title_box = $(this).children('.title');
// Selects the container of the title.
var title = $(this).children('.title').text().trim();
// Takes the child title of the each .segment class and selects its innards.
console.log(title);
var res = title.split("");
// Splits the text into an array.
console.log(res);
var fragment = [];
// initializing the empty array
for (x = 0; x < 4; x++) {
fragment.push(res[x]);
console.log(fragment);
// Loops through to make sure it's not more than 5 characters long
};
var final = fragment.join("");
// Joins the broken up string together.
title_box.empty();
final.appendTo(title_box);
});
};
你觉得我做错了什么?如果还有其他方法可以让我的代码更有效率,那么请不要犹豫告诉我。
答案 0 :(得分:3)
在此处,您将fragment
定义为数组:
var fragment = [];
然后填充它并执行此操作:
var final = fragment.join("");
阅读array.join上的文档,了解该功能的作用。简而言之,它将您的阵列加入string
现在当你这样做时:
final.appendTo(title_box);
您获得了TypeError
,因为字符串没有appendTo
方法
你可能想要的是一个调用appendTo
的jquery对象。
也许你的意思是:
title_box.text(final);