Javascript 如何在没有';还没有被渲染吗?

Javascript 如何在没有';还没有被渲染吗?,javascript,Javascript,我需要向一个元素添加一个css类,当加载页面时,该元素仍然没有创建。只有当下拉列表打开时,才会创建它。下面是我的代码,我在其中循环遍历一个列表并向元素添加一个类,但是,正如我所说的,找不到类“.dropdown popup row”,因为下拉开始时是关闭的 我现在正在做的是验证主体中是否存在“.dropdownlist”(如果存在,则表示下拉列表已打开) const str=“[0,1,2]”; const arr=JSON.parse(str); var dropdownList=docume

我需要向一个元素添加一个css类,当加载页面时,该元素仍然没有创建。只有当下拉列表打开时,才会创建它。下面是我的代码,我在其中循环遍历一个列表并向元素添加一个类,但是,正如我所说的,找不到类“.dropdown popup row”,因为下拉开始时是关闭的

我现在正在做的是验证主体中是否存在“.dropdownlist”(如果存在,则表示下拉列表已打开)

const str=“[0,1,2]”;
const arr=JSON.parse(str);
var dropdownList=document.querySelector(“.dropdownList”);
if(document.body.contains(dropdownList)){
var dropdownElements=document.querySelectorAll('.dropdown弹出行');
if(下拉元素){
对于(变量i=0;i
这在打开下拉列表的浏览器控制台中运行良好(因此,下拉列表在DOM中呈现并可用)。我想不出一种方法来将这个类添加到这个元素中。我得到的错误是:“UncaughtTypeError:无法读取未定义的属性'classList'


谢谢你们

为什么不在创建该元素时添加该类?
它是由外部库创建的吗?

如果您有
下拉元素
,您应该能够安全地对它们进行迭代,而不是对禁用索引列表进行迭代。比如:

if (document.body.contains(dropdownList)) {
    var dropdownElements = document.querySelectorAll('.dropdown-popup-row');

    // For each dropdown item
    dropdownElements.forEach(function(element, i) {
        // If the index corresponds to one in the list, disable it
        if (arr.includes(i)) {
            element.classList.add("-disabled");
        }
    });
}
在原始代码中,数组中的索引可能与下拉列表中的项目不匹配,这可能会导致收到的错误。例如,如果数组中有一个
4
,而下拉列表中只有四个元素,
dropdownElements[4]
将是未定义的。在我上面的代码中,这是不可能的,因为它在下拉列表中迭代元素


如果问题真的是只有在选择下拉列表后才呈现下拉列表元素,那么当聚焦或单击
dropdownList
时,您可能会运行上面的代码。

您是否尝试过DOMContentLoaded事件列表添加下拉列表元素的机制是什么?它们何时加载?没错,我的朋友!它是由外部脚本添加的。您可以编辑此脚本吗?如果是这样,就在那里添加你的类吧,如果不是,为什么不检查一下脚本中是否有反馈事件谢谢你!这样我就不会再收到错误,但是类也没有被应用。问题是我只有dropdownElements(由4个元素组成的数组),当下拉列表打开时,当它关闭时,我得到了一个空数组。谢谢大家!我终于成功了。我需要设置一个setInterval函数来监视在DOM中创建元素的时间,然后才添加类!
if (document.body.contains(dropdownList)) {
    var dropdownElements = document.querySelectorAll('.dropdown-popup-row');

    // For each dropdown item
    dropdownElements.forEach(function(element, i) {
        // If the index corresponds to one in the list, disable it
        if (arr.includes(i)) {
            element.classList.add("-disabled");
        }
    });
}