0

I have css classes dynamically added when a condition is met, these are part of a php foreach loop so the amount of divs created varies.

Multi css classes get added and taken away dynamically but if all of the child divs contain specifiaclly the yes class i want to console log true.

This is what i have tried, but it always returns true, in the example below it should not be "true" since one of the child divs does not comtain the yes class.

function hasSomeParentTheClass(element, classname) {
    if (element.className.split(' ').indexOf(classname)>=0) return true;
    return element.parentNode && hasSomeParentTheClass(element.parentNode, classname);
}

console.log(hasSomeParentTheClass(document.getElementById('the-element'), 'yes'));
<div class="the-class">
      <div class="eric purple yes" id="the-element"></div>
      <div class="eric" id="the-element"></div>
      <div  class="paul purple yes" id="the-element"></div>
  </div>
Glen Keybit
  • 296
  • 2
  • 15
  • 1
    You have 3 `divs` with the same `id`. – Balaji Nov 06 '21 at 10:36
  • 1
    1. IDs MUST be unique. 2. This is a simpler test: `if (element.classList.contains(classname))` - it is not clear if you want to test the parent or the list of child divs – mplungjan Nov 06 '21 at 10:36
  • Also, you check the element, and then you check its parent, but you never check its siblings. – pilchard Nov 06 '21 at 10:37

0 Answers0