javascript - querySelectorAll 或返回多个元素的任何其他方法 - 不起作用
问题描述
我想获取用户使用 php 编写的一些帖子,并使用 JavaScript 编写一个函数,该函数应该在第 50 个字符之后剪切帖子,并添加三个点 (...)。如果我使用 querySelector() 或 getElementById(),一切正常,但我无法使用任何多元素选择方法,如 querySelectorAll() 或 getElementsByClassName()。页面上有一些帖子,我需要全部选中。
这是带有 PHP 的 HTML:
<?php while ($post = mysqli_fetch_assoc($result_posts)) : ?>
<div class="card p-0 m-0 mt-3">
<div class="card-header text-white">
<span>
<?= $post['title'] ?>
</span>
</div>
<div class="card-body">
<p class='article'>
<?= $post['article'] ?>
</p>
</div>
</div>
<?php endwhile ?>
呈现的 HTML
<div class="card-header text-white">
<span>Title </span>
</div>
<div class="card-body">
<p class="text-left article" id="article">
Article</p>
</div>
JS函数:
function cutLongString() {
var article = document.querySelector('.article').textContent
if (article.length > 50) {
document.querySelector('p').innerHTML = article.slice(0, 49) + '...';
} else {
console.log(article)
}
}
cutLongString()
正如我所说,这种方式可以工作,但是如果我将 querySelector 更改为多元素选择方法,它会显示“文章未定义”。
解决方案
您必须遍历所有元素并textContent
一一设置新值:
function cutLongString() {
const articles = document.querySelectorAll('.article')
Array.from(articles).forEach(a => {
if (a.textContent.length > 50) {
a.textContent = a.textContent.slice(0, 49);
}
})
}
cutLongString();
<div class="card p-0 m-0 mt-3">
<div class="card-header text-white">
<span>Title </span>
</div>
<div class="card-body">
<!--Dont assign multiple elements to the same ID. Remove the id="article" below from the <p/>-->
<p class="text-left article" id="article">Article</p>
</div>
</div>
<div class="card p-0 m-0 mt-3">
<div class="card-header text-white">
<span>Title </span>
</div>
<div class="card-body">
<p class="text-left article" id="article">Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris</p>
</div>
</div>
希望这可以帮助,
推荐阅读
- python - Dialogflow api检测意图在Windows上不起作用
- javascript - 我试图了解关键字 `this` 和方法 `call` 是如何工作的。在我无知的眼里,它看起来像个虫子
- amazon-cloudformation - 如何检查用于创建代码管道的 cloudformation 模板
- go - map[*rsa.PublicKey]*rsa.Privatekey 类型的映射有值,但返回 nil
- google-chrome - Chrome 开发工具控制台窗口闪烁
- python - 使用 Python 的 HTTP 服务器和 HTML 中的图像
- r - plotly - 在散点图中闪亮添加搜索框和突出显示点
- python - Heroku - Web 进程在启动后 180 秒内无法绑定到 $PORT
- vba - Powerpoint VBA 在所有幻灯片上隐藏/显示某些文本框
- c - 如何在 C 中创建 char* 字符串的 char* 子字符串?