Смешивание считают шаблоном разработки?

Есть несколько проблем с вашим кодом (всегда проверяйте консоль на наличие ошибок).

Во-первых, поймите разницу между узлом и набором узлов. Такие функции, как getElementsByClassName, возвращают набор узлов , который представляет собой массив узлов. Поэтому вы не можете запускать методы узлов на них как есть, т. Е. Это приведет к ошибке:

boxDiv.nextSiblings(... //boxDiv is not a node; it's a nodeset

Следовательно, вам нужно перебрать набор узлов и работать с каждым элементом по очереди.

Далее, nextSiblings и previousSiblings не являются допустимыми методами; они должны быть в единственном числе, а не во множественном числе.

Далее, вы предполагаете, что есть следующий и предыдущий братья и сестры. Это приведет к ошибке в первом и последнем .box div по очевидным причинам.

Кроме того, пока мы здесь:

  • , как правило, лучше избегать DOM-событий «уровня 0», например. .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);
11
задан 4thSpace 12 February 2009 в 21:07
поделиться

3 ответа

Они - функция языка. "Шаблон" отличается от функции, в которой он разрешает ряд сил, которые могут влиять на ситуацию противоречащими способами. Функции, их присутствием или отсутствием, имеют тенденцию создавать силы та твердость шаблонов. Много шаблонов разработки (Двойная Отправка является хорошим примером) появились для работы вокруг ограничений языка (в этой диспетчеризации метода случая на отдельном аргументе).

7
ответ дан 3 December 2019 в 07:14
поделиться

Да, это находится в Ruby.

Шаблоны разработки в Ruby

4
ответ дан 3 December 2019 в 07:14
поделиться

Да, это находится в D.

"Шаблон разработки является общим допускающим повторное использование решением обычно происходящей проблемы в разработке программного обеспечения" - Википедия

D компилируется в машинный код, и с использованием mixins можно использовать его для создания шаблонов еще более полезными, чем они находятся в чем-то как C++.

http://www.digitalmars.com/d/1.0/template-mixin.html

3
ответ дан 3 December 2019 в 07:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: