我有一个我在ES6中实现的功能。除了访问循环中的变量(函数范围)之外,一切正常。
我正在函数的开头定义 let u 。在for循环中,一些子项应该附加到该变量 u 。当我在循环结束后将 u 注入到DOM中时,没有显示子元素,但是在循环中 u 被操纵(如控制台所说)。
我想我无法在循环/ if块中操作范围 u 的函数...但是,我从ES6中的let声明中理解 - 它应该可以工作!?有没有人有想法?谢谢!
背景:这是用babel转发到ES5的ES6代码,然后编译成在Windows 10 / UWP上运行的Apache Cordova应用程序,这可能会有所帮助
export function buildSubNavigation(parent) {
let u = $('<ul>')
.addClass('subNavbarList');
for (let p in window.pages) {
if(window.pages[p]['parent'] == parent){
let i = $('<li>')
.addClass('subNavbarItem')
.attr('id','subNavbarItem' + window.pages[p]['id'])
.click(function(){
// bind functions
//...
});
// console prints proper list items
console.log(i);
// console prints u including list childs
u.append(i);
}
}
// inject into page
// no list childs are injected to DOM, only UL element
$('#subNavbar').html(u);
//...
}
答案 0 :(得分:0)
事实证明,代码本身很干净,并没有产生错误。在通过npm重新安装模块后,代码的ES6 Babel转换出现了一些错误。