为什么我的 JavaScript 不能在 JSFiddle 中工作?

2022-08-30 05:30:19

我无法找出这个JSFiddle的问题是什么。

网页:

<input type="button" value="test" onclick="test()">

JavaScript:

function test(){alert("test");}

当我点击按钮时 - 什么也没发生。控制台显示“未定义测试”

我已经阅读了JSFiddle文档 - 它说JS代码被添加到和HTML代码被添加到(所以这个JS代码比html更早,应该可以工作)。<head><body>


答案 1

如果未指定包装设置,则默认为“onLoad”。这会导致在加载结果后将所有 JavaScript 包装在函数运行中。所有变量都是此函数的局部变量,因此在全局范围内不可用。

将包装设置更改为“不换行”,它将起作用:

http://jsfiddle.net/zalun/Yazpj/1/

我将框架切换到“无库”,因为您不使用任何库。


答案 2

该函数是在负载处理程序中定义的,因此位于不同的范围内。正如@ellisbben注释中指出的那样,您可以通过在对象上显式定义它来解决此问题。不过,更好的是,更改它以不显眼地将处理程序应用于对象:http://jsfiddle.net/pUeue/window

$('input[type=button]').click( function() {
   alert("test");   
});

请注意,以这种方式而不是内联方式应用处理程序可以保持 HTML 整洁。我正在使用jQuery,但是如果你愿意,你可以使用或不使用框架或使用不同的框架来做到这一点。