具体什么将成功触发JSFiddle中的JavaScript单击事件?

时间:2016-03-07 19:32:30

标签: javascript jquery html jsfiddle

我一直在努力尝试按下按钮点击事件,以便在点击特定按钮后JavaScript代码触发某些事件。

当我尝试在我的项目中执行点击触发器时没有问题,但我似乎无法使用JSFiddle来使其工作。

我首先按照这里的提示:JavaScript not running on jsfiddle.net

具体来说,meder omuraliev写的部分,"所以而不是

<p onclick="lol()" id="foo">

你做

var e = document.getElementById('foo'); 
e.onclick = lol;

仅限JS。&#34;

我试图遵循这条指令,这可以在我在这里做的简单例子中看到(它不起作用):https://jsfiddle.net/b7yj3cph/3/

&#13;
&#13;
var e = document.getElementById('test');
e.onclick = example;

var example = function( {
    alert("hello");
});
&#13;
<button id='test' type="button" onclick="example()">
  <div>
  Hello
  </div>
&#13;
&#13;
&#13;

我尝试了其他来源和方法,但无法使用。我尝试了W3Schools(https://jsfiddle.net/b7yj3cph/)的一个例子,尝试了一些JSFiddles来搜索&#34; jsfiddle按钮onclick&#34; (https://jsfiddle.net/Dogbyte/62cd0LLq/),有些人没有工作。

但是有些人做了;像这样(http://jsfiddle.net/lesson8/h4JXs/1/)似乎工作正常。

什么是唯一的,这使得点击触发器适用于某些JSFiddles而不适用于其他JSFiddles?我怀疑这与$(document).ready()部分有关,但我一直在阅读各种方法来实现这一点,我无法找到任何对我有意义的事情。

回到我之前分享的Stack Overflow主题,最高投票的回复有3个建议:

  1. &#34;(最简单,最快捷,不理想) - 将函数blah(){}更改为window.blah = function(){};使功能全球化。&#34;
  2. 好吧,在这里发布的JSFiddle按预期工作,没有使用window。我尝试使用window的尝试被证明没有结果。

    1. &#34;(理想方式) - 使用不显眼的Javascript将行为直接附加到JS中的DOM元素,这意味着单独的HTML与 JS&#34;
    2. 这是一个很好的观点并且有意义,但仍然没有解决我的问题 问题。

      1. &#34;让jsfiddle不包装东西onload。将onLoad更改为无包裹(正文或头部)。&#34;
      2. 我的具体例子并未包含在onLoad中(至少,我认为不是这样)。无论如何,谢谢!

2 个答案:

答案 0 :(得分:2)

你的小提琴中有两个问题:

首先,您的example函数声明不正确:

var e = document.getElementById('test');
e.onclick = example;

var example = function( { // parenthasis should be closed before opening braces
    alert("hello");
});

应该是:

var e = document.getElementById('test');
e.onclick = example;

var example = function() {
    alert("hello");
}

其次,您在onclick分配下方声明var example,其被解释为:

e.onclick = undefined

只需将var example移到e.onclick上方并修复语法问题就可以了:

var e = document.getElementById('test');
var example = function() {
    alert("hello");
}
e.onclick = example;    

答案 1 :(得分:1)

This is the way如果您不想等待加载DOM。

document.getElementById('btnSave').addEventListener('click',() => {
    alert('clicked the damn button!');
});

将某些内容附加到.onclick的原因并不起作用,因为为此,您必须等待DOM加载;在这种情况下,操作顺序非常重要。

相关问题