Что-то запутался. Почему так? как исправить?
var longtext = document.querySelector('.excerpt>p:nth-child(2)');// <p>long long text</p>
var cuttext = longtext.slice(0, 40); // Uncaught TypeError: longtext.slice is not a function
if (cuttext.length < longtext) {
cuttext += "...";
}
Используемый метод document.querySelector
возвращает только один элемент, а не массив.
Поэтому дальнейшая попытка взять первые сорок элементов(?) из одного выглядит странно.
Чтобы получить коллекцию элементов необходимо воспользоваться методом document.querySelectorAll
.
Которая возвращает коллекцию подходящих элементов, однако, у возвращаемой коллекции отсутствует метод slice
, и чтобы его применять нужно либо одолжить его у массива, либо преобразовать полученную коллекцию непосредственно в массив, например с помощью Array.from
var longtext = Array.from(document.querySelectorAll('.excerpt>p:nth-child(2)'));
var cuttext = longtext.slice(0,40); //Uncaught TypeError: longtext.slice is not a function
if (cuttext.length < longtext.length) {
cuttext+="...";
}
Однако, судя по названию переменных, можно предположить что работа ожидается с текстом, а не html элементами. В этом случае, чтобы получить текст выбранного элемента необходимо было воспользоваться методом textContent
, либо если нужно получить текст включая html-теги, innerHTML
var longtext = document.querySelector('.excerpt>p:nth-child(2)').textContent;//long long text
var cuttext = longtext.slice(0,40); //Uncaught TypeError: longtext.slice is not a function
if (cuttext.length < longtext.length) {
cuttext+="...";
}
cuttext в твоем варианте это не массив, а html collection.
переведи html collection в массив, потом сделай слайс
var arr = Array.prototype.slice.call( longtext )
var cuttext = arr.slice(0,40);
в итоге твой код:
<script type="text/javascript">
var longtext = document.querySelector('.excerpt>p:nth-child(2)’);
var arr = Array.prototype.slice.call( longtext );
var cuttext = arr.slice(0,40);
if (cuttext.length < longtext) {
cuttext+="...";
}
</script>
используя ES2015, я обычно делаю так:
var arr = [...longtext];
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Можете мне помочь найти слайдер как на изображении (может кто знает)Может знаете плагин на WordPress, чтобы сделать такой слайдер
Есть одностраничное react приложение, одна из функций которого - отрисовка некоторых графовЕсть кнопка загрузки пользовательских данных о цвете...
Как мне сделать, чтобы плавно отображалась следующая фотография?(и предыдущая) при клике на next вызывается функция $nextclick, в общем по коду видно
Есть сайт с интерактивной картойСправа поиск и список магазинов(при нажатии на элемент списка, подсвечивается элемент карты), слева список...