QuerySelector在Rails Webpacker中不起作用



我在Webpacker中加载了以下JavaScript:

'use strict';
(function() {
alert("This shows up.");
var someObject = document.querySelectorAll('[data-toggle="thing"]');
})();

我知道该文件已正确加载到Webpacker中并执行,因为我看到了警报This shows up.。但是,当我进入控制台时,someObject是一个空数组,尽管页面包含一个具有data-toggle属性的对象。

我在控制台中看不到任何有助于诊断问题的错误。

我猜这个问题涉及到在加载页面之前执行的脚本?然而,我不确定在使用Rails6和Webpacker时如何补救这种情况。。。

如有任何协助,我们将不胜感激!

您可能需要将代码封装在事件侦听器回调中,该回调将在加载DOM时执行。如果您的脚本标记位于<head>中,则可能会出现这种情况;它在加载页面的其余部分之前执行。

window.addEventListener('DOMContentLoaded', (_event) => {
let someObject = document.querySelectorAll('[data-toggle="thing"]');
});

您也不一定需要将代码封装在IIFE(即(function() { })()(中,因为webpack中的每个文件(通常(都被视为具有自己功能范围的模块。

最新更新