У меня есть массив p
тегов, и я хочу substring(0,5)
для каждого p
тега в массиве и заменить предыдущие. Но мой код работает некорректно.
HTML:
<div class="test1">
<p class="cls">1.Im try to use the click function </p>
<p class="cls">2.Im try to use the click function </p>
<p class="cls">3.Im try to use the click function </p>
</div>
JS:
$(document).ready(function () {
$('.cls').each(function () {
var iTotalWords = $(this).text().split(' ');
for (i = 0 ; i < iTotalWords.length; i++) {
var result = iTotalWords.substring(0, 50);
$(".cls").html(result);
}
});
});
Несколько проблем.
Вы не должны использовать общий селектор. Вы должны использовать текущий элемент, который является this
.
Вы не нуждаетесь в цикле и расщеплении, поскольку получаете полный текст и просто подстройте его.
подстрока (0, 50) запускает вас в проблемы, так как в вашей строке не должно быть 50 символов. Вы имеете в виду 0,5
правильно?
$(document).ready(function () {
$('.cls').each(function () {
var iTotalWords = $(this).text();
var result = iTotalWords.substr(0, 5);
$(this).html(result); });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test1">
<p class="cls">1.Im try to use the click function </p>
<p class="cls">2.Im try to use the click function </p>
<p class="cls">3.Im try to use the click function </p>
</div>
Я уверен, что если вы хотите получить 5 символов или 5 слов, я включил оба.
Получите элементы .cls
, итерации с использованием .each()
, и для каждого абзаца получите текст, а подстроку или срез - чтобы получить то, что вы хотите.
/** five characters **/
$('.test1 .cls').each(function() {
$(this).text($(this).text().substring(0, 5));
});
/** five words **/
$('.test2 .cls').each(function() {
$(this).text($(this).text().split(' ').slice(0, 5).join(' '));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="test1">
<p class="cls">1.Im try to use the click function </p>
<p class="cls">2.Im try to use the click function </p>
<p class="cls">3.Im try to use the click function </p>
</div>
<div class="test2">
<p class="cls">1.Im try to use the click function </p>
<p class="cls">2.Im try to use the click function </p>
<p class="cls">3.Im try to use the click function </p>
</div>
сладкий и простой
$(document).ready(function () {
$('.cls').each(function () {
console.log("with substr(start,end) ::"+$(this).text().substr(0,4));
});
});
Ну, если вы решили сделать это просто с чистой JS, вы можете просто сделать следующее:
document.querySelectorAll('div.test1 > p')
.forEach(p => p.textContent = p.textContent.substr(0,5));
<div class="test1">
<p class="cls">1.Im try to use the click function </p>
<p class="cls">2.Im try to use the click function </p>
<p class="cls">3.Im try to use the click function </p>
</div>