Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用相同的类/VanillaJS循环并切换元素?_Javascript_Json_Ajax_Frontend - Fatal编程技术网

Javascript 如何使用相同的类/VanillaJS循环并切换元素?

Javascript 如何使用相同的类/VanillaJS循环并切换元素?,javascript,json,ajax,frontend,Javascript,Json,Ajax,Frontend,我正在为一个搜索引擎做前端,我有一个div,它会根据搜索结果重复很多次。它们都需要有截断的文本并显示更多/更少的按钮。我正在使用toggle类截断文本。我写了下面的代码,但是,它只适用于第一个div,我不知道如何使它适用于所有div。有人能帮我解释一下吗 我曾尝试使用for循环,但我认为我做错了什么 HTML 洛雷姆·伊普苏姆·多洛·西特·阿梅特,麦格纳·阿利夸。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。两人或两人因共同

我正在为一个搜索引擎做前端,我有一个div,它会根据搜索结果重复很多次。它们都需要有截断的文本并显示更多/更少的按钮。我正在使用toggle类截断文本。我写了下面的代码,但是,它只适用于第一个div,我不知道如何使它适用于所有div。有人能帮我解释一下吗

我曾尝试使用
for
循环,但我认为我做错了什么

HTML

洛雷姆·伊普苏姆·多洛·西特·阿梅特,麦格纳·阿利夸。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。在沃鲁帕特·维利特的《雷德亨德瑞特》中,两人都是孤苦伶仃

显示更多

Lorem ipsum dolor sit amet,magna aliqua。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。在沃鲁帕特·维利特的《雷德亨德瑞特》中,两人都是孤苦伶仃

显示更多

Lorem ipsum dolor sit amet,magna aliqua。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。两人或两人因共同利益而受到谴责。在沃鲁帕特·维利特的《雷德亨德瑞特》中,两人都是孤苦伶仃

显示更多
CSS

p.result-box-description{
@包括体视学(14);
颜色:#000;
边缘顶部:15px;
边缘底部:15px;
线高:1.2米;
文本对齐:对齐;
}
.截断{
显示:-网络工具包盒;
-webkit线夹:3个;
-网络工具包盒方向:垂直;
溢出:隐藏;
文本溢出:省略号;
}
JavaScript

window.onload=函数(){
document.querySelector('.show').addEventListener('click',textToggle);
};
函数textToggle(){
常量段落=document.getElementsByClassName('result-box-description');
const btn=document.querySelector('.show');
对于(变量i=0;i

我只是想让所有的div都以同样的方式工作,因为我不知道实际的数字是多少。

以下是正确的结果吗

编辑:添加了切换逻辑

window.onload=function(){
from(document.getElementsByClassName('show')).forEach(element=>element.addEventListener('click',textToggle));
};
功能文本切换(ev){
常量段落=document.getElementsByClassName('result-box-description');
const btns=document.getElementsByClassName('show');
var btn=ev.目标;
var para=ev.target.previousSibling.previousElementSibling;
if(段落classList.contains(“truncate”)){
对于(变量i=0;i
p.result-box-description{
@包括体视学(14);
颜色:#000;
边缘顶部:15px;
边缘底部:15px;
线高:1.2米;
文本对齐:对齐;
}
.截断{
显示:-网络工具包盒;
-webkit线夹:3个;
-网络工具包盒方向:垂直;
溢出:隐藏;
文本溢出:省略号;
}

洛雷姆·伊普苏姆·多洛·西特·阿梅特,麦格纳·阿利夸。但是,在最低限度上,我们需要一个实验室来进行日常工作。两人或两人因共同利益而受到谴责。酒后驾车 这是一个令人震惊的事件,它发生在一个普通消费者身上。两人或两人因共同利益而受到谴责。在沃卢帕特拉布里斯的reprehenderit中,两人或两人死亡 从一个普通的消费品中购买。两人或两人因共同利益而受到谴责。在沃鲁帕特·维利特的《雷德亨德瑞特》中,两人都是孤苦伶仃

显示更多

Lorem ipsum dolor sit amet,magna aliqua。但是,在最低限度上,我们需要一个实验室来进行日常工作。二人一组

window.onload = function() {
  let shows = document.querySelectorAll('.show');
  shows.forEach((link) => { link.addEventListener('click', textToggle); });
};

function textToggle() {
  let paragraph = this.previousElementSibling;
  if (paragraph.classList.contains('truncate')) {
    paragraph.classList.remove('truncate');
    this.innerHTML = 'show less';
  } else {
    paragraph.classList.add('truncate');
    this.innerHTML = 'show more';
  }
}