Javascript 有没有办法防止在HTMLi';我使用bootstrap 4在一页中折叠20次 可折叠组项目#1 可折叠组项目#2 动物教区的陈词滥调reprehenderit,enim eiusmod high life accusamus wolf moon放了一个 工艺啤酒智囊团。纯素食主义者,屠夫副洛莫。绑腿农场- 可折叠组项目#3 动物教区的陈词滥调,埃尼姆·埃乌斯莫德的高生命accusamus terry wolf moon Nihil anim keffiyeh helvetica,工艺啤酒工人是一位卓越的智者。纯素广告
您好,我已经在我的代码上复制和粘贴了10-20次,更改了id、标题id和按钮。我还复制和粘贴了一堆其他html代码(图像标签约20幅图像),我想知道是否有办法停止使用纯html css重复代码(如函数)。如果没有,你能用纯香草js吗?如果没有,还有什么其他方法 总之 最重要的问题(A是最重要的C是最不重要的)Javascript 有没有办法防止在HTMLi';我使用bootstrap 4在一页中折叠20次 可折叠组项目#1 可折叠组项目#2 动物教区的陈词滥调reprehenderit,enim eiusmod high life accusamus wolf moon放了一个 工艺啤酒智囊团。纯素食主义者,屠夫副洛莫。绑腿农场- 可折叠组项目#3 动物教区的陈词滥调,埃尼姆·埃乌斯莫德的高生命accusamus terry wolf moon Nihil anim keffiyeh helvetica,工艺啤酒工人是一位卓越的智者。纯素广告,javascript,html,css,bootstrap-4,Javascript,Html,Css,Bootstrap 4,您好,我已经在我的代码上复制和粘贴了10-20次,更改了id、标题id和按钮。我还复制和粘贴了一堆其他html代码(图像标签约20幅图像),我想知道是否有办法停止使用纯html css重复代码(如函数)。如果没有,你能用纯香草js吗?如果没有,还有什么其他方法 总之 最重要的问题(A是最重要的C是最不重要的) A) 有没有办法防止使用折叠代码重复代码 上面是纯HTML/CSS吗?如果是,怎么做 B) 有没有办法防止使用折叠代码重复代码 上面是纯HTML/CSS/vanilla js吗?如果是,
- A) 有没有办法防止使用折叠代码重复代码 上面是纯HTML/CSS吗?如果是,怎么做
- B) 有没有办法防止使用折叠代码重复代码 上面是纯HTML/CSS/vanilla js吗?如果是,怎么做
- C) 有没有办法防止使用折叠代码重复代码 上面只是纯HTML/CSS/angular/react?如果是,怎么做
- 在纯HTML/CSS中,这是不可能的,除非您使用带有某种模板语言的服务器端呈现
至于使用纯HTML/CSS/JS,ECMAScript 262在这里介绍了非常有效的方法:
<div class="card" style>
<div class="card-header" id="headingOne">
<h5 class="mb-0">
<button class="btn btn-link" data-toggle="collapse" data-target="#collapseOne" aria-
expanded="true" aria-controls="collapseOne">
Collapsible Group Item #1
</button>
</h5>
</div>
<!-- Add mx-auto -->
<div id="collapseOne" class="collapse show text-center mx-auto" aria-labelledby="headingOne"
style="width:300px;">
<div class="card-body">
<div class="card">
<div class="card-header text-center" id="headingTwo" style="width:300px;">
<h5 class="mb-0">
<button class="btn btn-link collapsed text-center" data- toggle="collapse" data-
target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo" style="width:300px;">
Collapsible Group Item #2
</button>
</h5>
</div>
<div id="collapseTwo" class="collapse show" aria-labelledby="headingTwo">
<div class="card-body">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus wolf moon put a
craft beer sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings farm-
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingThree">
<h5 class="mb-0">
<button class="btn btn-link collapsed" data-toggle="collapse" data- target="#collapseThree"
aria-expanded="false" aria-controls="collapseThree">
Collapsible Group Item #3
</button>
</h5>
</div>
<div id="collapseThree" class="collapse" aria-labelledby="headingThree">
<div class="card-body">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry wolf moon
et. Nihil anim keffiyeh helvetica, craft beer labore wes sapiente ea proident. Ad vegan
</div>
</div>
</div>
</div>
作为Polygenome答案的延伸 您可以通过以下方式在vanilla JavaScript中实现这一点:
功能附加卡(id、内容){
设el=document.querySelector(“.card”);
让内容=document.createTextNode(`
可折叠组项#${id}
${content}
`);
el.附件(内容);
}
希望这有帮助 您可以使用一个函数来重复您希望复制元素的次数,在下面的代码片段中,我创建了一个函数,该函数将使用克隆
.card
节点并进行多次迭代,然后修改克隆节点上使用的ID和属性,下面是选项a
的代码片段:
function duplicates元素(选择器,numOfDuplicates){
let元素=document.querySelector(选择器);
对于(设i=numf重复;i>0;i--){
让newElement=element.cloneNode(true);
newElement.querySelector('#headingOne').id=`headingOne-${i}`;
newElement.querySelector('#collapseOne').id=`collapseOne-${i}`;
newElement.querySelector('#collapseTwo').id=`collapseTwo-${i}`;
newElement.querySelector('#headingTwo').id=`headingTwo-${i}`;
让toggleBtn=newElement.querySelector(“[data target=“#collapseOne”]”);
toggleBtn.dataset['target']=`collapseOne-${i}`;
setAttribute('aria-controls','collapseOne-${i}`);
让toggleBtn2=newElement.querySelector(“[data target=“#collapseTwo”]”);
toggleBtn2.dataset['target']=`collapseTwo-${i}`;
setAttribute('aria-controls','collapseTwo-${i}`);
元素。在(新元素)之后;
}
}
重复元素('.card',4)代码>
可折叠组项目#1
可折叠组项目#2
动物教区的陈词滥调,埃尼姆·埃乌斯莫德的高级生命accusamus wolf moon把一个工艺啤酒智慧放在了一个冒失的人身上。纯素食主义者,屠夫副洛莫。绑腿农场-
我想我找到了另一个答案,它涉及html
标记和json来获取数据
HTML模板
:
HTML内容模板(
)元素是一种保存HTML的机制,在加载页面时不会立即呈现HTML,但随后可以在运行时使用JavaScript实例化HTML
因此,这正是解决这类问题所需要的
解决方案
首先,需要在json对象中指定按钮文本和卡片内容。这个json可以驻留在一个单独的文件中(如下图所示加载),也可以将json内容放在一个变量中,如JSFIDLE中所示
1。使用Json文件
data.json
<script>
function createCard(id, content) {
return `<div class="card">
<div class="card-header" id="heading-${id}">
<h5 class="mb-0">
<button class="btn btn-link collapsed" data-toggle="collapse" data-target="#collapse-${id}" aria-expanded="false" aria-controls="collapse-${id}">Collapsible Group Item #${id}</button>
</h5>
</div>
<div id="collapse-${id}" class="collapse" aria-labelledby="heading-${id}">
<div class="card-body">
${content}
</div>
</div>
</div>`;
}
$(function(){
// create one card
$('#cards').append($(createCard('1', "Lorem ipsum")));
// create nested cards
$('#cards').append($(createCard('2', createCard(3, "Dolor sit amnet"))));
});
</script>
loadDom
函数:
函数loadDom(){
//从data.json获取数据
var xobj=新的XMLHttpRequest();
重写emimetype(“application/json”);
open('GET','data.json',true);
xobj.onreadystatechange=函数(){
if(xobj.readyState==4&&xobj.status==200){
//解析json
让dataToLoad=JSON.parse(xobj.responseText);
//制作卡片
dataToLoad.forEach((卡,i)=>{
创建卡片(i,卡片[“按钮”]、卡片[“主体”]);
});
}
};
xobj.send(空);
}
2。内联Json
函数loadDom(){
//只需指定所需的数据。。。
var DATATTOLOAD=[{
[
{
"button" : "Button 1",
"body" : "Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt"
},
{
"button" : "Button 2",
"body" : "aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat"
},
{
"button" : "Button 3",
"body" : "craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS."
},
{
"button" : "Button 4",
"body" : "Lorem ipsum dolor sit amet"
}
]