Calendar está usando 3 clases diferentes para diseñar sus elementos secundarios: "viejo día", "día", "nuevo día". Intentar consultar el elemento SelectorAll con el nombre de clase "día" también captura las otras dos clases, así que cuando digo algo como:
t = document.getElementByTagName('table'); d = t.item(0).querySelectorAll('.day'); /* also selects td.new.day and td.old.day */ for (i = 0; i < d.length: i ++) { if(d[i].textContent == 28) { d[i].click(); } }
Haré clic en el 28 anterior en lugar del 28 del mes actual.
¿Cómo selecciono la clase "día" del elemento td sin seleccionar también "día anterior" y "día nuevo"?
Puede usar :not
para especificar qué clases no desea hacer coincidir.
document.querySelectorAll(".red:not(.big):not(.small)").forEach(e => { e.style.marginLeft = "100px"; });
.red {color: red;} .big {font-size: 20px} .small {font-size: 12px}
<a class="red">red</a><br> <a class="red big">red big</a><br> <a class="red small">red small</a>