问题:
提供的代码在实时站点上可以正常运行,但失败在 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中文网其他相关文章!