Javascript 无法读取属性';类列表';空| JS的性质 函数CommentStyle(){ var elementAuthor=document.getElementById(“作者”); var elementEmail=document.getElementById(“电子邮件”); var elementUrl=document.getElementById(“url”); elementAuthor.classList.add(“表单控件”、“ulockd表单bps”、“必需”、“电子邮件”); elementEmail.classList.add(“表单控制”、“ulockd表单bps”、“必需”、“电子邮件”); elementUrl.classList.add(“表单控件”、“ulockd表单bps”、“必需”、“电子邮件”); } window.onload=CommentStyle; .表格管制{ 边框:1px虚线#中交; }

Javascript 无法读取属性';类列表';空| JS的性质 函数CommentStyle(){ var elementAuthor=document.getElementById(“作者”); var elementEmail=document.getElementById(“电子邮件”); var elementUrl=document.getElementById(“url”); elementAuthor.classList.add(“表单控件”、“ulockd表单bps”、“必需”、“电子邮件”); elementEmail.classList.add(“表单控制”、“ulockd表单bps”、“必需”、“电子邮件”); elementUrl.classList.add(“表单控件”、“ulockd表单bps”、“必需”、“电子邮件”); } window.onload=CommentStyle; .表格管制{ 边框:1px虚线#中交; },javascript,Javascript,我只想在某些ID中添加一些类。是的,现在我有了更好的样式,但我还有一个控制台错误:(在您的文档中,在DOM中,ID为“author”和/或“email”和/或“url”的元素)不存在。因此,elementAuthor、elementEmail或elementUrl为空,您无法访问空错误的classList属性,因此出现错误 如果声明的元素缺少ID,请检入HTML。正如我在另一个线程中所解释的,在运行时,此代码无法找到要查找的元素ID 请将此代码移动到页面正文中的最低点(即,在关闭标记之前),以确

我只想在某些ID中添加一些类。是的,现在我有了更好的样式,但我还有一个控制台错误:(

在您的文档中,在DOM中,ID为“author”和/或“email”和/或“url”的元素)不存在。因此,
elementAuthor
elementEmail
elementUrl
为空,您无法访问空错误的
classList
属性,因此出现错误


如果声明的元素缺少ID,请检入HTML。

正如我在另一个线程中所解释的,在运行时,此代码无法找到要查找的元素ID

请将此代码移动到页面正文中的最低点(即,在关闭
标记之前),以确保在元素准备就绪之前它不会执行

如果您在每个页面上执行此代码,包括没有这些元素的页面,请尝试以下操作。请注意,尽管这些元素不存在,但它不会抛出任何错误

函数CommentStyle(){
var elementAuthor=document.getElementById(“作者”);
var elementEmail=document.getElementById(“电子邮件”);
var elementUrl=document.getElementById(“url”);
如果(!elementAuthor | | |!elementEmail | |!elementUrl)
返回;
elementAuthor.classList.add(“表单控件”、“ulockd表单bps”、“必需”、“电子邮件”);
elementEmail.classList.add(“表单控制”、“ulockd表单bps”、“必需”、“电子邮件”);
elementUrl.classList.add(“表单控件”、“ulockd表单bps”、“必需”、“电子邮件”);
}

window.onload=CommentStyle;
如何编写条件JS代码来检查ID是否存在以防止控制台错误。我无法使用后端语言检查它,因为脚本非常复杂。您可以递归使用
setTimeout
并在传递的函数中检查每个
文档。getElementById
是否
==未定义的
。但我并不认为这是您想要的,这是一种不好的做法。相反,您应该了解这些DOM元素何时存在(直接在HTML中,或生成它们的函数中)在您的页面中,找到编写相应修改
类列表
的代码的位置。例如,如果您直接在HTML代码中声明了这些内容,您只需在
脚本
标记后面或页面底部调用
CommentStyle
。@FabioCrispino我只知道这里发生了什么,因为e如果函数绑定到
onload
,则元素在应该的时候不存在,根据定义,当DOM加载完毕时会触发。因此,这里发生的事情是OP在每个页面上运行此逻辑,他需要它在可以的时候工作,在不能的时候离开。这不是一个好的工程,但我想与大家分享与
onload
的连接。如何编写条件JS代码来检查ID是否存在以防止控制台错误。我无法使用后端语言检查它,因为脚本非常复杂complex@Displayname我更新了.If
document.getElementById(id)
是falsy,这意味着它不存在。谢谢,你的代码适用于ID。但是,当我尝试将相同的类添加到另一个ID时,它不适用于ID。我复制了它的js路径:document.querySelector(“comment”)。控制台中没有关于注释ID的登录。是什么原因导致了这个问题?div没有获取这些类。
(index):1451 Uncaught TypeError: Cannot read property 'classList' of null
    at CommentStyle ((index):1451)
    at window.onload (waypoints.min.js?ver=4.0.2:1)
<script>
    function CommentStyle() {
        var elementAuthor = document.getElementById("author");
        var elementEmail = document.getElementById("email");
        var elementUrl = document.getElementById("url");
        elementAuthor.classList.add("form-control", "ulockd-form-bps", "required", "email");
        elementEmail.classList.add("form-control", "ulockd-form-bps", "required", "email");
        elementUrl.classList.add("form-control", "ulockd-form-bps", "required", "email");
    }
    window.onload = CommentStyle;
</script>
<style>
    .form-control {
        border: 1px dashed #cccccc;
    }
</style>