我有以下JS提琴https://jsfiddle.net/73rpubfd/工作良好。将代码粘贴到此处以供参考:
<ul class="nav nav-tabs" id="test">
</ul>
var items=['a1','a2'];
var arrayLength = items.length;
for (var i = 0; i < arrayLength; i++) {
$("#test").append("<li><a>"+items[i]+"</a></li>");
}
我的要求是为标签插入一个id, id值的一部分将来自数组值。
所以,我希望它在循环中是这样的:
$("#test").append("<li><a id="tab_"+items[i]+">"+items[i]+"</a></li>");
在chrome的开发人员工具中检查li元素后,它基本上看起来像这样。
<li><a id="tab_a1">a1</a></li>
<li><a id ="tab_a2">a2</a></li>
但是当我试图定义' id = tab_"它开始抱怨。我做错了什么吗?
我认为这是html道具需要双引号格式的问题。创建复杂字符串的最佳方法是使用模板字面值,如下所示:
$("#test").append(`<li><a id="tab_${items[i]}">${items[i]}</a></li>`);
使用模板字面值可以包含由${expression}
指示的占位符,并且可以用于字符串插值
var items=['a1','a2'];
var arrayLength = items.length;
for (var i = 0; i < arrayLength; i++) {
const li = `<li><a id="tab_${items[i]}">${items[i]}</a></li>`;
$("#test").append(li);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<ul class="nav nav-tabs" id="test">
</ul>
或者在一行中不使用jQuery
使用数组映射方法,将每个数组项转换为li
html,最后以空连接。
const html = items.map(item => `<li><a id="tab_${item}">${item}</a></li>`).join('');
$("#test").append(html);
如果双引号出现在另一个引号中,则需要转义。
$("#test").append("<li><a id="tab_">"+items[i]+"</a></li>");
另一个解决方案是使用反号:
$("#test").append(`<li><a id="tab_">${items[i]}</a></li>`);