首页  >  文章  >  web前端  >  为什么我的 JavaScript 代码可以在本地运行,但不能在 JSfiddle.net 上运行?

为什么我的 JavaScript 代码可以在本地运行,但不能在 JSfiddle.net 上运行?

Barbara Streisand
Barbara Streisand原创
2024-10-31 21:55:02492浏览

Why Does My JavaScript Code Work Locally But Not on JSfiddle.net?

JavaScript 未在 JSfiddle.net 上运行

问题:

提供的代码在实时站点上可以正常运行,但失败在 JSfiddle.net 上执行,导致控制台错误,例如“ReferenceError:fillList未定义”和“ReferenceError:mySelectList未定义。”

解释:

在给定的代码中,这些函数是在 onload 函数中定义的。虽然这允许在该函数内引用这些函数,但不能全局访问它们。因此,当您使用全局名称(例如 fillList() 和 mySelectList)从 HTML 引用这些函数时,JSfiddle 无法识别它们。

解决方案:

此问题有三种主要解决方案:

a) 全球化函数:

<code class="javascript">window.fillList = function() {};
window.mySelectList = function() {};</code>

这种方法使函数全局化,但并不理想,因为它污染了全局命名空间。

b) 使用不显眼的 JavaScript:

在 onload 函数之外定义函数并单独使用 JavaScript 附加事件侦听器:

<code class="javascript">function fillList() {}
function mySelectList() {}

window.onload = function() {
  var e = document.getElementById('elementId');
  e.addEventListener('click', fillList);
};</code>

这种 HTML 和 JavaScript 的分离是最佳实践。

c) 修改 JSfiddle 设置:

将 JSfiddle 设置更改为“No Wrap (head or body)”以防止代码被包装在 onload 函数中。这使得函数可以全局访问。

以上是为什么我的 JavaScript 代码可以在本地运行,但不能在 JSfiddle.net 上运行?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn