Javascript 检查动态添加的类是否存在

Javascript 检查动态添加的类是否存在,javascript,Javascript,如果…直接写在HTML文档中,但如果它是由JavaScript本身插入的,则此功能不起作用。有什么想法吗?好吧,想想你在和听众做什么。当触发DOMContentLoaded事件时,您正在运行此代码。如果您在其他地方更改DOM,则无法保证此代码将在以后运行。事实上,除非您手动发出该事件,否则它将只在每页运行一次 但是,由于我不知道在运行时附加类的代码是什么样子,所以我不能更具体地说 例如,下面的代码生成“dom loaded”,但不生成“class is found!”: document.add

如果
直接写在HTML文档中,但如果它是由JavaScript本身插入的,则此功能不起作用。有什么想法吗?

好吧,想想你在和听众做什么。当触发
DOMContentLoaded
事件时,您正在运行此代码。如果您在其他地方更改DOM,则无法保证此代码将在以后运行。事实上,除非您手动发出该事件,否则它将只在每页运行一次

但是,由于我不知道在运行时附加类的代码是什么样子,所以我不能更具体地说

例如,下面的代码生成“dom loaded”,但不生成“class is found!”:

document.addEventListener('DOMContentLoaded', function() {
    if (document.getElementsByClassName('myclass').length) {
        doSomething();
    }
});
下面的代码按预期生成这两个结果

document.getElementById("foo").className = "myclass";

document.addEventListener('DOMContentLoaded', function() {

  alert('dom loaded');

    if (document.getElementsByClassName('myclass').length) {
       alert('My class is found!');
    }
});
为了向您展示我的意思,以下是plunkr链接:


使用
className.indexOf

document.addEventListener('DOMContentLoaded', function() {

  alert('dom loaded');

  document.getElementById("foo").className = "myclass";

    if (document.getElementsByClassName('myclass').length) {
       alert('My class is found!');
    }
});

我想你的问题是因为类是在你的
DOMContentLoaded
事件触发后添加的。是一个对象:你可以通过getElementById或类似方式检索它假设他想按类提取对象,正如问题所示,这对他没有多大帮助。我没有正确理解他的问题。你说得对。对不起,谢谢!如果不仅动态添加了类,甚至还动态添加了div元素,那会怎么样?只要函数在正确的时间被调用,这就不应该成为问题。请记住,加载页面时会发出“DOMContentLoaded”。如果您想获取之后添加的一些内容,则需要使用不同的事件侦听器,或者以其他方式调用函数。EDIT:TLDR:getElementsByClassName不关心某个东西来自哪里,如果它在DOM上,它会找到它。它只需要在正确的时间被调用。你会建议哪种替代的事件监听器?这取决于用例。如果要添加类以响应单击,则可以将其添加到单击事件中。如果它可能在任何时候发生,您可以将其附加到间隔。如果您想在多个位置进行检查,您可以单独声明函数并将其传递给多个侦听器。。。Javascript充满了可能性:P
myElement = document.getElementById("IdOfTheElement");

if(myElement.className.indexOf('MyClassName') != -1){
   /* The class exist*/
}