为什么这个简单的JSFiddle不能工作?

19

我想把一些代码放到JSFiddle上,但它没有运行。缩小问题后,我甚至不能让这最简单的代码工作:

JSFiddle

function displaymessage() {
  alert("Hello World!");
}
<form>
  <input type="button" value="Click me!" onclick="displaymessage()" />
</form>

<p>By pressing the button above, a function will be called. The function will alert a message.</p>

JSFiddle中alert框不会弹出。


1
"没有工作"不是一个问题描述。 - Lightness Races in Orbit
1
@thomasf1:请将您的采纳答案更改为早期和更完整的 https://dev59.com/jmw05IYBdhLWcg3wxUj_#7043684。 - mplungjan
8个回答

36

在JavaScript设置中的“加载类型”下拉菜单中选择 No wrap - bottom of <head>

上述下拉菜单的截图


1
谢谢!我确定我漏掉了什么。我真是太蠢了! - thomasf1
2
好的,现在它可以工作了。但是“*no wrap (head)*”具体意味着什么?它是在做什么或不做什么? - erik
1
请@BlakeWebb重新运行“项目”,以使更改生效。 - weilah
截至2018年1月 - mplungjan
2
看起来这个选项现在已经消失了。 - Sebastian Simon

9

您需要将您的函数移出load/onReady事件,否则它会被放置在另一个范围内,您的按钮就无法访问该函数。在您的情况下,您需要使用“无包装(head)”选项。

生成的代码如下:

Ext.onReady(function() {
    function displaymessage()
    {
        alert("Hello World!");
    }
});

4
将代码更改为运行“无包装(头部)”而不是“onDomReady”。您的函数按原样不可见于标记。

1

如果你使用html onclick="func()",可能需要将函数移出document.ready以外。

$(document).ready(function() {
  ...
}

function func(){
  ...
}

0

如果您仍然有问题,请检查您是否已经安装了

  1. 作为浏览器扩展的AdBlocker?(例如AdBlocker Plus)

enter image description here

  1. 在JSFiddle中关闭AdBlocker并重新运行。

希望这能帮助到某些人。

谢谢。


-2

抱歉,但是...比你提出的要简单得多...

如果你想通过 "onclick" 属性调用 js 函数,请直接将你的 javascrit 代码放在 head 中,你不需要 domready 或类似的东西。

其次,你需要在函数名之前包含 "javascript:"。

参见:http://jsfiddle.net/XNJxT/1838/

<input type="button" value="Click me!" onclick="javascript:displaymessage()" />

4
根据这个很棒的回答javascript:不被推荐使用(不良实践)。 - erik

-4
我的问题是当我创建脚本标签时,我打错了:

script type="javascript/text"

而不是:

script type="text/javascript"

现在它可以工作了。


-6

8
我不理解这个答案。这是一个解释吗?还是一个解决方案? - Nicolas Barbulesco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接