javascript - 带有 querySelector 的 Gatsby 函数在具有正确 scss 的 .classList 上给出空错误
问题描述
TypeError:无法读取 null 的属性“classList”。
我知道,你会认为它已经回答过很多次了。我也是这样,做了一个研究,但似乎没有什么合适的。
我正在使用 gatsbyJS。我正在尝试在我的网站上重新创建:[https://codepen.io/Azametzin/pen/rZJYpa]。如果 DOM 没有加载,我尝试更改位置,并从所有主题中包装在文档等中,但事情似乎仍然很糟糕。
无论如何,这里是代码:
function LanguagePretty() {
const { i18n } = useTranslation();
return (
<div class="chooseLang" value={i18n.language}
onClick={(e) =>
i18n.changeLanguage(e.target.value)
}>
<div>
<span id="en-lang" class="lang en-lang chosen" onClick={changeLang('en', this)} value="en"></span>
<span id="bg-lang" class="lang bg-lang" onClick={changeLang('bg', this)} value="bg"></span>
</div>
</div>
);
};
function changeLang(language, el) {
var container = document.querySelector('.chooseLang').classList;
el = el.classList;
if (container.contains('open')) {
container.remove('open');
if (!el.contains('chosen')) {
document.querySelector('.chooseLang .chosen').classList.remove('chosen');
el.add('chosen');
console.log(language + ' chosen')
// your code
}
return;
}
container.add('open');
}
export default LanguagePretty;
错误出现在.classlist
这里的每个案例,也出现在add, remove and contains('element')
. 让我这样它无法识别scss,但它确实如此,因为如果我将代码与示例链接保持相同onclick="changeLang('english', this)"
而不是这样onclick={changeLang('english', this)}
,错误确实消失了,但是当我单击<span>
元素时没有任何反应。某处有一个错误,我可怜的新手技能无法解决。请协助。
解决方案
推荐阅读
- python - Keras Lambda:函数无法返回可调用的张量
- typescript - 使用类型保护缩小函数返回类型
- java - 尝试在 Google Play 上发布我的应用程序时,第 20 行出现错误无法识别的 xmltree 行:'C:“”'
- javascript - node.js 获取构造被拒绝的承诺的位置
- c# - 将 ASP.NET Core(完整的 .net 框架)与旧的 .Net Framework 2.0 代码混合
- laravel - 在 Laravel 中修复 Vue Flash 消息
- c# - 如何在调试模式下禁用 serilog
- spring - 在spring boot中从文件系统加载properties.yaml文件
- abap - 根据 RICEF,BAPI 是接口还是转换工具?
- sql - VB.NET > 如何使用 Using 语句插入图像并检索它以显示?