это моя первая попытка ответа.
Вы получаете "undefined" для element.innerText.Это связано с тем, что использование document.getElementsByClassName (selector) возвращает массив элементов.Если вы хотите продолжить использовать getElementsByClassName, измените свой код на «element [0] .innerText» или выполните итерацию по элементам, если вы хотите вызвать функцию для каждого элемента этого класса.
В противном случае выможно изменить «MaxDescription» с класса на id и использовать document.getElementByID.
Изменить это:
var element = document.getElementsByClassName(selector),
truncated = element.innerText;
На Это:
var element = document.getElementsByClassName(selector),
truncated = element[0].innerText;
Для перебора всехэлементы этого класса:
// for iterating through each:
for(int i = 0; i < element.length < i++){
var truncated = element[i].innerText;
if (truncated.length > maxLength) {
element[i].innerText = truncated.substr(0, maxLength) + '...';
}
}
Устанавливает innerText всех элементов внутри самого цикла, так что нет необходимости возвращать что-либо из функции.
Вот плункер, показывающий различныеварианты реализации, которые вы могли бы рассмотреть.
https://plnkr.co/edit/o7ELqTQQukSmpcjbO210?p=preview
Надеюсь, это поможет, по крайней мере, немного.