我正在尝试使用从DOM中提取的信息来创建导航栏,但是我一直收到与模板表达式中的“Uncaught SyntaxError:Missing”读取的ES6模板字符串(在本例中嵌套)相关的错误“< /强>
我对ES6语法很陌生。有什么建议吗?
function makeNavList() {
var myList = ``;
$("#superfish-1>li").each(function (index, value) {
myList += `<li>
<a href="#!">${$(value).find(">a").text()}</a>
<ul class="nav-dropdown">
<li><a href="${$(value).find("a").attr("href")}">${$(value).find(">a").text()} - All</a></li>
${
let collapselist= () =>{
let innerlist = "";
$("#superfish-1>li.ul>li").each(function(index, value){
let linkPath = $(value).find("a").attr("href");
let linkText = $(value).find("a").text();
innerlist += `<li>
<a href="${linkPath}">${linkText}</a>
</li>`
})
return innerlist;
}
}</ul>
</li>`
})
return myList
}
答案 0 :(得分:1)
模板文字中的标记占位符的内容必须是表达式,但您尝试使用语句(let collapselist = ...
)。你不能这样做。
相反,首先创建列表然后将其嵌入字符串中可能最干净:
let collapselist= () =>{
let innerlist = "";
$("#superfish-1>li.ul>li").each(function(index, value){
let linkPath = $(value).find("a").attr("href");
let linkText = $(value).find("a").text();
innerlist += `<li>
<a href="${linkPath}">${linkText}</a>
</li>`
})
return innerlist;
};
然后
${collapelist}
...在模板文字中。
答案 1 :(得分:0)
将您的功能移到模板之外。您无法在${}
:
function makeNavList() {
var myList = ``;
$("#superfish-1>li").each(function (index, value) {
myList += `<li>
<a href="#!">${$(value).find(">a").text()}</a>
<ul class="nav-dropdown">
<li><a href="${$(value).find("a").attr("href")}">${$(value).find(">a").text()} - All</a></li>
${getCollapselist()}</ul>
</li>`
})
return myList
}
getCollapselist = function(){
let innerlist = "";
$("#superfish-1>li.ul>li").each(function(index, value){
let linkPath = $(value).find("a").attr("href");
let linkText = $(value).find("a").text();
innerlist += `<li>
<a href="${linkPath}">${linkText}</a>
</li>`
})
return innerlist;
}
答案 2 :(得分:-1)
如果您有ES6功能,则需要使用ES6功能的新良好实践标准化您的代码,例如使用箭头功能等,您的错误是您在{}内声明了您的功能。
const makeNavList = () => {
let myList = '';
const collapseList = () =>{
let innerList = '';
$("#superfish-1>li.ul>li").each(value => {
const linkPath = $(value).find("a").attr("href");
const linkText = $(value).find("a").text();
innerList += `<li><a href="${linkPath}">${linkText}</a></li>`
});
return innerList;
}
$("#superfish-1>li").each(value => {
myList += `<li>
<a href="#!">${$(value).find(">a").text()}</a>
<ul class="nav-dropdown">
<li><a href="${$(value).find("a").attr("href")}">${$(value).find(">a").text()} - All</a></li>
${`${collapseList()}`}
</ul>
</li>`
})
return myList
}