Я делаю внешний интерфейс для поисковой системы, и у меня есть div, который будет повторяться много раз в зависимости от результатов поиска. Все они должны иметь усеченный текст и показывать больше / меньше кнопок. Я использую класс переключения для усечения текста. Я написал код ниже, однако, он работает только для первого div, и я не знаю, как заставить его работать для всех них. Может кто-нибудь, пожалуйста, помогите / объясните мне?
Я пытался использовать цикл for
, но я думаю, что я делаю что-то не так
HTML
<p class="result-box-description truncate">Lorem ipsum dolor sit amet, magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit...</p>
<span class="show">show more</span>
<p class="result-box-description truncate">Lorem ipsum dolor sit amet, magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit...</p>
<span class="show">show more</span>
<p class="result-box-description truncate">Lorem ipsum dolor sit amet, magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptatelaboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit...</p>
<span class="show">show more</span>
CSS
p.result-box-description {
@include tipography(14);
color: #000;
margin-top: 15px;
margin-bottom: 15px;
line-height: 1.2em;
text-align: justify;
}
.truncate {
display: -webkit-box;
-webkit-line-clamp: 3;
-webkit-box-orient: vertical;
overflow: hidden;
text-overflow: ellipsis;
}
JavaScript
window.onload = function () {
document.querySelector('.show').addEventListener('click', textToggle);
};
function textToggle() {
const paragraphs = document.getElementsByClassName('result-box-description');
const btn = document.querySelector('.show');
for (var i = 0; i < paragraphs.length; i++) {
paragraphs[i].classList.toggle('truncate');
}
if (paragraphs.classList.contains('truncate')) {
btn.innerHTML = 'show more';
} else {
btn.innerHTML = 'show less';
}
}
Я просто хочу, чтобы все элементы div работали одинаково, поскольку я не знаю, каким будет действительное число.