未定义的ReferenceError未定义

时间:2019-07-20 18:25:19

标签: javascript html

我在这里想念什么?

我在html视图中有此javascript:

 sections.forEach(sec => {
    const li = jQuery(`<li>${sec.categoryName}<button type="button" onclick="
    if (confirm('Remove ${sec.categoryName}?')) removeSectionTapped(sec)"
        >Remove</button></li>`);
        jQuery('#Sections').append(li);
    });

function removeSectionTapped(sec) {
    console.log(sec)
}

在我按OK确认后,我收到此错误:Uncaught ReferenceError sec is not defined

sec是在确认消息中定义的,但是在if语句中没有定义。

1 个答案:

答案 0 :(得分:2)

您有两个名为sec的变量,它们都被声明为函数参数的名称,因此对于这些函数而言是本地的。

您正在尝试在onclick属性内使用变量。该属性不在这两个函数中(即使从中生成属性的HTML源代码也位于其中),因此该变量在使用时已超出范围。

请勿使用onclick属性,而应使用JavaScript绑定事件处理程序。

 sections.forEach(sec => {
    const li = jQuery("<li />");
    li.append(sec.categoryName);
    const button = jQuery('<button type="button" />');
    button.text("Remove")
    button.on("click", () => {
        if (confirm(`Remove ${sec.categoryName}?`)) {
            removeSectionTapped(sec);
        }
    });
    li.append(button);
    jQuery('#Sections').append(li);
});

function removeSectionTapped(sec) {
    console.log(sec)
}