javascript - 使用 javascript 显示时隐藏 div 出现错误 - Vanilla Javascript

标签 javascript css

我正在开发一个支持多语言的网站。

我有一些具有多种语言的相同内容的 div,并且我根据用户客户端的语言显示内容。

一切正常,但我收到一条错误消息

Uncaught TypeError: Cannot read property 'style' of null at mywebsite.html

错误指向显示的case

如何消除该错误?

var language = navigator.language || navigator.languages[0];
console.log(language);
var languageFistTwo = language.substr(0,2); // To only keep the first 2 characters.
console.log(languageFistTwo);

switch (languageFistTwo) {
    case "sl":
        document.getElementById("sl").style.display="inline-block";
        break;  
    case "en":
        document.getElementById("en").style.display="inline-block";
        break;
    case "de":
        document.getElementById("de").style.display="inline-block";
        break;
    case "it":
        document.getElementById("it").style.display="inline-block";
        break;
    case "hr":
        document.getElementById("hr").style.display="inline-block";
        break;
    case "ru":
        document.getElementById("ru").style.display="inline-block";
        break;
    default:
        document.getElementById("en").style.display="inline-block";
}
#sl {
    display: none;
}

#en {
    display: none;
}

#de {
    display: none;
}

#it {
    display: none;
}

#hr {
    display: none;
}

#ru {
    display: none;
}
<div id="sl">
Zdravo
</div>

<div id="en">
Hello
</div>

<div id="de">
Gutten Tag
</div>

最佳答案

Uncaught TypeError: Cannot read property 'style' of null at mywebsite.html

您的其中一个 document.getElementById 语句返回 null。所以它无法读取/更新样式。

检查您是否拥有所有元素并且 ID 是否正确。

您还可以添加 jquery ready function (或等效的)以确保在尝试访问 DOM 之前所有内容都已加载

$( document ).ready(function() {
    console.log( "ready!" );
});
<小时/>

为了确保正确处理错误,您应该在操作元素之前检查该元素是否存在

var element = document.getElementById("myElement")
if (element) {
  element.style.display="inline-block";
}

关于javascript - 使用 javascript 显示时隐藏 div 出现错误 - Vanilla Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59766976/

相关文章:

javascript - 上一个按钮导致幻灯片消失

javascript - 文件上传后如何显示文件名

javascript - onclick 不创建永久更改

jQuery Accordion 未显示

html - 直线过渡的两种颜色边框

jquery - 向下滚动 100% 屏幕高度后更改 CSS 类

javascript - Jquery/JS 替换字符串中的文本

javascript - 有没有办法改变谷歌图表中 vaxis 基线的宽度/厚度?

javascript - 为什么这个用户脚本在 Facebook 上不起作用?

html - 如何删除我的部分顶部的额外间距