Anonymous function error : SyntaxError: Unexpected end of input

Anonymous function error : SyntaxError: Unexpected end of input

我在我的 Javascript 代码中动态创建 DOM 元素,我正在尝试添加一个匿名函数作为 onclick 事件处理程序。这是我的代码:

var onClickFunction = "(function(){var x = document.getElementById('onPrsClickButton'); x.value = this.id; x.click();})()";

var libelle = '<div onclick=' + onClickFunction + '></div>'

但是每当我点击这个 <div> 时,控制台都会给我这个错误:

SyntaxError: Unexpected end of input

有谁知道为什么?谢谢!

打印输出将是

<div onclick=(function(){var x = document.getElementById('onPrsClickButton'); x.value = this.id; x.click();})()></div>

这不是有效的 HTML 属性 值。
要使其有效,您必须将值括在引号 (") 或撇号 (') 中。
一些浏览器可以承受一定程度的滥用,比如不编写正确的语法,但这是不可信的。

此外,您的代码有一个 IIFE(立即调用的函数表达式)。这意味着函数内的代码将立即执行,而不是在您单击时执行(尽管我不确定在这种特定情况下的实际行为)。

要使您的示例正常工作,您可以这样做:

var onClickFunction = function(){
    // Your event handler
};

var libelle = '<div onclick="javascript:onClickFunction();"></div>'

但解决问题的最佳方法 (IMO) 是为您的点击添加一个侦听器,如下所示:

var libelle = document.getElementById("libelle");
libelle.addEventListener('click', function(){
    // Your event handler
});