Есть несколько проблем с вашим кодом (всегда проверяйте консоль на наличие ошибок).
Во-первых, поймите разницу между узлом и набором узлов. Такие функции, как getElementsByClassName
, возвращают набор узлов , который представляет собой массив узлов. Поэтому вы не можете запускать методы узлов на них как есть, т. Е. Это приведет к ошибке:
boxDiv.nextSiblings(... //boxDiv is not a node; it's a nodeset
Следовательно, вам нужно перебрать набор узлов и работать с каждым элементом по очереди.
Далее, nextSiblings
и previousSiblings
не являются допустимыми методами; они должны быть в единственном числе, а не во множественном числе.
Далее, вы предполагаете, что есть следующий и предыдущий братья и сестры. Это приведет к ошибке в первом и последнем .box
div по очевидным причинам.
Кроме того, пока мы здесь:
.onclick
и вместо этого используйте addEventListener()
. Есть несколько причин для этого, которые выходят за рамки этого ответа. let
, чем var
Давайте все соберем вместе
let
parent = document.querySelector('#row'),
boxDiv = document.querySelectorAll('.box'),
btnCh = document.querySelector('#changeColor')
;
btnCh.addEventListener('click', evt => {
boxDiv.forEach(el => {
if (el.classList.contains('green')) {
if (el.nextSibling) el.nextSibling.classList.add('green');
if (el.previousSibling) el.previousSibling.classList.add('green');
}
});
}, false);
Они - функция языка. "Шаблон" отличается от функции, в которой он разрешает ряд сил, которые могут влиять на ситуацию противоречащими способами. Функции, их присутствием или отсутствием, имеют тенденцию создавать силы та твердость шаблонов. Много шаблонов разработки (Двойная Отправка является хорошим примером) появились для работы вокруг ограничений языка (в этой диспетчеризации метода случая на отдельном аргументе).
Да, это находится в D.
"Шаблон разработки является общим допускающим повторное использование решением обычно происходящей проблемы в разработке программного обеспечения" - Википедия
D компилируется в машинный код, и с использованием mixins можно использовать его для создания шаблонов еще более полезными, чем они находятся в чем-то как C++.