我正在使用 WordPress,我正在尝试使用自定义子主题中的functions.php 内的 JavaScript 获取数据属性的值并将其分配给变量。
页面呈现以下正文:
<body class="(...)" data-elementor-device-mode="desktop">
我有以下功能:
var body = document.body;
console.log(body);
var bodyDevice = body.dataset.elementorDeviceMode;
console.log(bodyDevice);
第一个 console.log 按预期返回正文,但第二个 console.log 仍返回“未定义”。
这一定是语法问题,因为以下内容
var bodyDevice = body.clientWidth;
console.log(bodyDevice);
将返回 body 元素的当前宽度(这解决了我的问题);无论如何,为什么是
var bodyDevice = body.dataset.elementorDeviceMode;
console.log(bodyDevice);
不返回“桌面”值?
最佳答案
Elementor 在初始化时通过 JavaScript 插入数据集,请参见第 271 行:https://github.com/elementor/elementor/blob/master/assets/dev/js/frontend/frontend.js
基本上,您的代码不会返回任何内容,因为它是在 Elementor 插入数据集之前执行的...因此,在执行代码时没有 data-elementor-device-mode
.
尝试在页面加载后执行代码,例如:
window.onload = function() {
var bodyDevice = document.body.dataset.elementorDeviceMode;
console.log(bodyDevice);
};
关于javascript - 将主体的数据属性值分配给变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60031037/