在javascript中指定时onclick未运行

在javascript中指定时onclick未运行,javascript,onclick,Javascript,Onclick,当我单击按钮时,它不会运行onclick。我在控制台上试过,效果很好。有人能帮忙吗 function customAlert(message) { sect = document.createElement("section"); sect.className = "alert"; sect.innerHTML = message + "<br /><br />"; var but = document.createElement("button");

当我单击按钮时,它不会运行onclick。我在控制台上试过,效果很好。有人能帮忙吗

function customAlert(message) {
  sect = document.createElement("section");
  sect.className = "alert";
  sect.innerHTML = message + "<br /><br />";

  var but = document.createElement("button");
  but.innerHTML = "Gotcha.";
  but.onclick = "document.body.removeChild(sect);";

  sect.appendChild(but);
  document.body.appendChild(sect);

}
功能自定义警报(消息){
sect=document.createElement(“section”);
sect.className=“警报”;
sect.innerHTML=消息+“

”; var但是=document.createElement(“按钮”); 但是。innerHTML=“明白了。”; 但是.onclick=“document.body.removeChild(sect);”; 第三节儿童(但是); 文件.正文.附件(第节); }
您应该使用以下语法:

but.onclick = function () {
    document.body.removeChild(sect);
}

因此,onClick是一个
属性
。这意味着它有一些价值。单击
btn
时,javascript(浏览器)调用此属性,但它希望它是一个函数,执行一些代码。相反,它“看到”一个字符串,不知道如何处理它。

您应该使用以下语法:

but.onclick = function () {
    document.body.removeChild(sect);
}

因此,onClick是一个
属性
。这意味着它有一些价值。单击
btn
时,javascript(浏览器)调用此属性,但它希望它是一个函数,执行一些代码。相反,它“看到”一个字符串,不知道如何处理它。

您应该使用以下语法:

but.onclick = function () {
    document.body.removeChild(sect);
}

因此,onClick是一个
属性
。这意味着它有一些价值。单击
btn
时,javascript(浏览器)调用此属性,但它希望它是一个函数,执行一些代码。相反,它“看到”一个字符串,不知道如何处理它。

您应该使用以下语法:

but.onclick = function () {
    document.body.removeChild(sect);
}


因此,onClick是一个
属性
。这意味着它有一些价值。单击
btn
时,javascript(浏览器)调用此属性,但它希望它是一个函数,执行一些代码。相反,它“看到”一个字符串,不知道如何处理它。

onclick的值应该是函数,而不是字符串。@scunlife它可以是字符串,就像将属性放入HTML
一样。但它将在全局范围内执行。如果它在某些情况下有效。。。作为一个字符串。。。我认为这是侥幸(很可能是因为一个函数的快速铸造)(例如,评估())。从文档中可以清楚地看出它应该是一个函数引用:OnLoCK的值应该是一个函数,而不是一个字符串。@ Scuniffe可以是一个字符串,就像把属性放进HTML“代码> <代码> >。但是它将在全局范围内执行。如果它在某些情况下工作……作为一个字符串……我认为这是侥幸。(由于函数的快速“转换”(例如eval()),可能是全局的)从文档中可以清楚地看出它应该是一个函数引用:OnLoCK的值应该是一个函数,而不是一个字符串。@ Scuniffe可以是一个字符串,就像把属性放进HTML“代码> <代码> >。但是它将在全局范围内执行。如果它在某些情况下工作……作为一个字符串……我认为这是侥幸。(由于函数的快速“转换”(例如eval()),可能是全局的)从文档中可以清楚地看出它应该是一个函数引用:OnLoCK的值应该是一个函数,而不是一个字符串。@ Scuniffe可以是一个字符串,就像把属性放进HTML“代码> <代码> >。但是它将在全局范围内执行。如果它在某些情况下工作……作为一个字符串……我认为这是侥幸。(可能是全局性的,因为对函数进行了快速“强制转换”(例如eval())。从文档中可以清楚地看出,它应该是一个函数引用:请添加一个解释,说明原始语法不起作用的原因。添加了一个解释。解释不太正确。它知道如何处理字符串,它会执行它,就像
eval一样(string)
。它不起作用的原因是变量是在全局范围内计算的,他想访问局部变量
sect
。我为此创建了一个在线JS小提琴测试,我认为string选项根本不起作用(至少在Firefox、Chrome、Opera、IE10的标准模式下)谢谢大家!我正在做一个小游戏,这很有帮助!请添加一个解释,解释为什么原始语法不起作用,而这确实起作用。添加了一个解释。解释不太正确。它知道如何处理字符串,它会执行它,就像使用
eval(string)一样
。它不起作用的原因是,变量是在全局范围内计算的,他想访问局部变量
sect
。我为此创建了一个在线JS小提琴测试,我认为字符串选项根本不起作用(至少在Firefox、Chrome、Opera、IE10的标准模式下)谢谢大家!我正在做一个小游戏,这很有帮助!请添加一个解释,解释为什么原始语法不起作用,而这确实起作用。添加了一个解释。解释不太正确。它知道如何处理字符串,它会执行它,就像使用
eval(string)一样
。它不起作用的原因是,变量是在全局范围内计算的,他想访问局部变量
sect
。我为此创建了一个在线JS小提琴测试,我认为字符串选项根本不起作用(至少在Firefox、Chrome、Opera、IE10的标准模式下)谢谢大家!我正在做一个小游戏,这很有帮助!请添加一个解释,解释为什么原始语法不起作用,而这确实起作用。添加了一个解释。解释不太正确。它知道如何处理字符串,它会执行它,就像使用
eval(string)一样
。它不起作用的原因是,变量是在全局范围内计算的,他想访问局部变量
sect
。我为此创建了一个在线JS小提琴测试,我认为字符串选项根本不起作用(至少在Firefox、Chrome、Opera、IE10的标准模式下)谢谢大家!我正在做一个小游戏,这很有帮助!