为什么在这个简单的 jsfiddle 演示中不触发点击事件?

Why isn't click event firing in this simple jsfiddle demo?

我正在尝试在 jsfiddle 上创建一个小演示,但是当我单击切换按钮时,单击事件没有触发,它显示 myclick is not defined

我看过其他提到无包装解决方案的答案,但我现在在 jsfiddle 中没有看到这样的配置选项。

jsfiddle:https://jsfiddle.net/5j9qgbxa/4/

将负载类型更改为 No wrap -bottom of the <body>

这是Demo

似乎类型为 onload 的 javascript 将在您的 jsfiddle 的开头创建 javascript,如下所示:

window.onload=function(){
  function myclick(){
   alert("myclick");
  }
}


<YourHTML>

在这种情况下,他将无法识别 myclick(),因为这是稍后在 HTML 中创建的,并且不会由 onload 触发。正如您在这个 jsfiddle 中看到的那样,您可以采取什么措施来避免这种情况:https://jsfiddle.net/cqL9t8mh/1/

我在这里做的是,删除按钮中的 onclick="myclick" 并将其替换为 ID 'btnToggle'。之后,在 javascript 部分中,您可以添加类型为点击 ID 'btnToggle' 的 addEventListener 以触发您的 myclick 函数。

此外,您在上一个答案的命令中询问的内容如下:

这将使您的代码布局像这样:

<YourHTML>
function myclick(){
   alert("myclick");
  }

在这种情况下,您的 HTML 是在您的函数之前首先创建的,它不再处于加载状态,因此现在您每次单击按钮时都会触发它。