javascript - 如何使用引导程序创建可折叠菜单
问题描述
我正在尝试构建一个代码片段 html 页面,我正在使用引导框架。
我的代码看起来像打击
HTML
<div class="col-lg-4 col-md-4 col-sm-4">
<div class="list-container">
<ul class="list-group list-group-flush" id="snippets">
<h3 class="list-group-item-heading">Code Snippets</h3>
</ul>
</div>
</div>
JS代码
<script>
$( document ).ready( function () {
for ( var index = 0; index < snippets.length; index++ ) {
$( "#snippets" ).append( '<li class="list-group-item"> <div id="snippet_name" data-toggle="collapse" data-target="#codesnippet">'
+ snippets[index].Name + '</div> <div id="codesnippet" class="collapse codesnippet javascript">'
+ '<pre><code class="javascript">'
+ snippets[index].Code + '</code></pre></li>' );
}
} );
</script>
我不确定我在这里缺少什么。第 2 行倒塌在这里没有按预期工作。例如,如果我有两个具有以下结构的片段
[
{
"name" : "alert",
"code" : "alert('message')" ,
},
{
"name" : "console",
"code" : "console.log(message)",
}
]
我得到两行alert
和console
。当我点击alert
它的折叠和显示alert('message')
代码但是当我点击它时console
,我看不到它的代码。但是当我检查console
部分时,我可以看到该代码,并且我也可以毫无问题地打印该对象。
任何建议都非常感谢。
谢谢你。
解决方案
由于您正在<li>
使用循环创建元素for
,因此您必须使每个元素都id
独一无二。一种方法是将循环中的index
值附加到.for
id
此外,您对“名称”和“代码”使用大写字母,而不是 json 中使用的小写字母。
最后,您缺少div
我在结束元素之前添加的结束标签<li>
。
$( document ).ready( function () {
for ( var index = 0; index < snippets.length; index++ ) {
$( "#snippets" ).append( '<li class="list-group-item"> <div id="snippet_name' + index + '" data-toggle="collapse" data-target="#codesnippet' + index + '">'
+ snippets[index].name + '</div> <div id="codesnippet' + index + '" class="collapse codesnippet javascript">'
+ '<pre><code class="javascript">'
+ snippets[index].code + '</code></pre></div></li>' );
}
} );
希望有帮助。
推荐阅读
- javascript - Javascript 事件侦听器单击多个
- javascript - Express.js - 点击 url 从 api 下载文件
- apache - 服务器重定向
- apache - Mod Rewrite 停止规则?
- git - Bit local repo:从旧提交中删除文件
- npm - 在 PhpStorm 中配置 node-sass
- javascript - 什么是 TypeError: require(...)(...) is not a function 当我尝试运行我的 playWright 脚本时?
- xml - 如何检索 XML 参数实体的值?
- kubernetes - 用于 2 组注释的 Helm 模板
- reactjs - 渲染异步获取的数据