使用 JS 为 Genesis 框架内的站点内部类设置 CSS 属性 - filter: blur(x);无法读取 null 的属性“getAttribute”
2019-08-25
344
我试图在通过单击移动菜单按钮展开 Genesis 示例主题中的移动下拉菜单事件后,使用 JS 在“site-inner”类上实现模糊效果。
该按钮具有 aria-expanded 属性,我决定使用它作为触发器。
Genesis Framework 中由 responsive-menus.js 创建的 HTML 元素:
<button class="menu-toggle dashicons-before dashicons-menu activated" aria-expanded="true" aria-pressed="true" id="genesis-mobile-nav-primary"></button>
下面是我正在使用的代码:
window.onload = blurFunction();
function blurFunction() {
var x = document.getElementById("genesis-mobile-nav-primary").getAttribute("aria-expanded");
if (x == "true")
{
document.getElementById("site-inner").style.webkitFilter = "blur(8px)";
}
}
控制台返回以下内容:
Uncaught TypeError:
Cannot read property 'getAttribute' of null.
Uncaught TypeError:
Cannot set property 'webkitFilter' of undefined
编辑:
删除括号后,函数实际上会执行 - 但是 - 我添加了 else 语句,这是唯一真正起作用的部分。该函数运行,检查 aria-expanded 属性并将 else 条件添加到我已添加 id="st-pusher" 的 site-inner 元素。
以下是代码:
window.onload = blurFunction;
function blurFunction() {
let x = document.getElementById("genesis-mobile-nav-primary").getAttribute("aria-expanded");
if (x == 'true') {
document.getElementById("st-pusher").style.webkitFilter = "blur(8px)";
} else {
document.getElementById("st-pusher").style.webkitFilter = "blur(0px)";
};
}
2个回答
结果发现,除了函数使用的括号之外,主要问题在于我使用的事件处理程序。在我将其更改为 .onclick 事件后,现在一切都正常了,因为触发该函数的元素是一个移动菜单按钮。感谢大家的帮助 :)
window.onclick = blurFunction;
function blurFunction() {
var x = document.getElementById("genesis-mobile-nav-primary").getAttribute("aria-expanded");
if (x == "true") {
document.getElementById("st-pusher").style.webkitFilter = "blur(8px)";
} else {
document.getElementById("st-pusher").style.webkitFilter = "blur(0px)";
};
}
Paul Kamyszek
2019-08-25
这是因为您执行了
window.onload = blurFunction();
而不是
window.onload = blurFunction;
,因此立即运行了您的函数,而不是将其分配到页面准备就绪时运行。
YellowAfterlife
2019-08-25