добавить класс и удалить из элемента к другим братьям и сестрам - Учебник по JavaScript

Ошибка, которую вы видите, не связана с вашей конфигурацией безопасности, вы можете взглянуть на этот билет, https://github.com/spring-projects/spring-boot/issues/3260

Если вы хотите разрешить весь трафик до конечных точек прошлого /public, вы можете добавить RequestMatcher в список игнорирования Spring Security.

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

    @Override
    public void configure(WebSecurity web) throws Exception {

        web.ignoring().antMatchers("/rest/public/**");
     }

     protected void configure(HttpSecurity http) throws Exception {

          http.authorizeRequests().antMatcher("/rest/private/**")
          .anyRequest().authenticated().and()
          .httpBasic().and()
          .csrf().disable()
     }

}

http://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#jc

0
задан Prajwal 15 January 2019 в 17:52
поделиться

2 ответа

Вы должны создать некоторую логику здесь. Если вы хотите иметь один цветной ящик из списка всех, вы должны помнить свой предыдущий основной ящик. Итак, вы напишете следующие инструкции:

html:

<div class="row">
  <div class="box main"><span>1</span></div>
  <div class="box green" id="one" ><span>2</span>   </div>
</div>
<button>Change main box</button>

js:

let boxes = Array.from(document.querySelectorAll(".box"));
let button = document.getElementsByTagName('button')[0];
let mainBoxIndex = 0;

button.addEventListener('click', function() {
  boxes[mainBoxIndex].classList.remove('main');
  mainBoxIndex = (mainBoxIndex + 1 < boxes.length) ? mainBoxIndex + 1 : 0;
  boxes[mainBoxIndex].classList.add('main');
});

Более подробно посмотреть вы можете здесь: https: / /codepen.io/anon/pen/jXJyqQ Надеюсь, это вам поможет.

0
ответ дан Nikita 15 January 2019 в 17:52
поделиться

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

Во-первых, поймите разницу между узлом и набором узлов. Такие функции, как 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);
0
ответ дан Utkanos 15 January 2019 в 17:52
поделиться
Другие вопросы по тегам:

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