Javascript 按钮创建“;未捕获的语法错误:意外标记(“在”DOCTYPE html“中”;

Javascript 按钮创建“;未捕获的语法错误:意外标记(“在”DOCTYPE html“中”;,javascript,Javascript,按下下面创建的按钮时,返回以下错误: “1未捕获的语法错误:意外标记(” 在DOCTYPE中,在html文件的顶部键入html function createButton(check){ var btn = document.createElement("button"); btn.setAttribute("onclick", "function(){checkQuestion(check);}"); var textbtn = document.createTex

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

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

在DOCTYPE中,在html文件的顶部键入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); };
…这允许它与关闭的
检查一起工作;在您的例子中,
检查
是生成按钮的调用的
createButton
函数的参数

或者使用
addEventListener
,除非需要传统支持(IE8及更早版本,包括IE的[处于]兼容模式):

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

onXYZ
属性样式处理程序意味着是一步一步的代码;浏览器将它们包装在一个函数中。因此
onXYZ
处理程序最终是这样的:

function onclick(event) {
    function() {
        checkQuestion(check);
    }
}
您可以看到问题:生成的函数的内容无效

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

btn.setAttribute("onclick", "return checkQuestion(check);"); 
…但请注意,在这种情况下,
check
必须是一个全局变量

相反,您可能希望将以下内容指定给
onclick
属性:

btn.onclick = function() { return checkQuestion(check); };
…这允许它与关闭的
检查一起工作;在您的例子中,
检查
是生成按钮的调用的
createButton
函数的参数

或者使用
addEventListener
,除非需要传统支持(IE8及更早版本,包括IE的[处于]兼容模式):

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