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
});
我在我的 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
});