JavaScript报错Uncaught SyntaxError: Unexpected end of input求助
解决Uncaught SyntaxError: Unexpected end of input错误
嘿,这个问题我太熟悉了!你遇到的Uncaught SyntaxError: Unexpected end of input错误,根源出在你设置onclick属性的方式上,咱们一步步拆解看看:
问题到底出在哪?
你这段代码里的关键错误是这句:
div.setAttribute("onclick", "democlick(", now, ")");
setAttribute的第二个参数只能是单个字符串,但你传了三个独立的参数:"democlick("、now、")"。浏览器只会读取第一个参数作为onclick的值,最终生成的代码是democlick(——这明显是个未闭合的函数调用,直接触发了语法错误。
而且就算你拼接了字符串,还有个隐藏问题:now是日期字符串,直接放在函数参数里会被当成JavaScript表达式解析,而不是字符串值,同样会报错。
两种修复方案
方案1:正确拼接字符串(内联事件方式)
把参数拼成一个完整的字符串,同时给now加上单引号(注意外层用双引号,内层用单引号避免冲突):
var now = "2018-04-17 11:10:20"; var div = document.createElement("div"); var element = document.getElementById("box"); element.appendChild(div); div.setAttribute("id", "card"); // 修复这里的字符串拼接 div.setAttribute("onclick", "democlick('" + now + "')"); // 后面的代码继续... var img = document.createElement("img"); var para = document.createElement("p"); var isi = document.createTextNode(datetime);
这样生成的onclick属性值就是democlick('2018-04-17 11:10:20'),语法完全合法。
方案2:使用事件监听器(更推荐)
内联事件处理不仅容易出现语法问题,还不利于代码维护。更专业的做法是用addEventListener绑定事件,这样不需要处理字符串拼接和引号转义:
var now = "2018-04-17 11:10:20"; var div = document.createElement("div"); var element = document.getElementById("box"); element.appendChild(div); div.setAttribute("id", "card"); // 用addEventListener绑定点击事件 div.addEventListener('click', function() { democlick(now); }); // 后面的代码继续... var img = document.createElement("img"); var para = document.createElement("p"); var isi = document.createTextNode(datetime);
这种方式直接把变量now传给democlick函数,完全避免了字符串相关的语法错误,代码也更清晰。
内容的提问来源于stack exchange,提问作者Nugka
相关产品推荐
相关产品推荐

