javascript - 按钮在 "Uncaught SyntaxError: Unexpected token ("中创建 "<DOCTYPE html>"

标签 javascript

按下下面创建的按钮时,它返回以下错误:

“1 未捕获的语法错误:意外的标记(”

在 html 文件顶部的 DOCTYPE html 中。

function createButton(check){
    var btn = document.createElement("button"); 
    btn.setAttribute("onclick", "function(){checkQuestion(check);}"); 
    var textbtn = document.createTextNode("Submit"); 
    btn.appendChild(textbtn);
    document.body.appendChild(btn);

check 是一个变量,它引用一个指定问题的数字,用 checkQuestion() 进行检查。

是上面代码的错误吗?

最佳答案

onXYZ 属性样式的处理程序应该是逐步代码;浏览器将它们包装在一个函数中。所以 onXYZ 处理程序最终会变成这样:

function onclick(event) {
    function() {
        checkQuestion(check);
    }
}

可以看到问题:生成的函数内容无效。

因此,如果使用 onXYZ 处理程序,它应该是:

btn.setAttribute("onclick", "return checkQuestion(check);"); 

...但请注意,在这种情况下,check 必须是一个全局变量。

相反,您可能想要分配给 onclick 属性:

btn.onclick = function() { return checkQuestion(check); };

...这允许它与它关闭的 check 一起工作;在您的情况下,check 是生成按钮的调用的 createButton 函数的参数。

或者使用 addEventListener 除非需要旧版支持(IE8 和更早版本,包括 IE 的 [in] 兼容模式):

btn.addEventListener("click", function() {
    return checkQuestion(check);
}, false);

关于javascript - 按钮在 "Uncaught SyntaxError: Unexpected token ("中创建 "<DOCTYPE html>",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847373/

相关文章:

javascript - 递归函数如何将消息保存在数组中?

javascript - 多次提交按钮点击问题?

javascript - 如何在鼠标悬停时显示所有 div 的内部图像标题?

javascript - d3.js 和 json - 简单的示例代码?

javascript - 粘性导航菜单

javascript - 测试输入的值是否为数字

javascript - 在javascript中动态创建表未正确显示列

JavaScript 设置函数

javascript - 如何判断事件是否来自右 Ctrl 键?

JavaScript JQuery String Var 在字段中显示