Нажмите кнопку и измените цвет рамки в другом месте на странице [дублировать]

public class LambdaScopeTest {
    public int x = 0;        
    class FirstLevel {
        public int x = 1;    
        void methodInFirstLevel(int x) {

            // The following statement causes the compiler to generate
            // the error "local variables referenced from a lambda expression
            // must be final or effectively final" in statement A:
            //
            // x = 99; 

        }
    }    
}

Как говорили другие, переменная или параметр, значение которого никогда не изменяется после его инициализации, фактически является окончательным. В приведенном выше коде, если вы измените значение x во внутреннем классе FirstLevel, компилятор выдаст вам сообщение об ошибке:

Локальные переменные, на которые ссылается выражение лямбда, должны быть окончательными или эффективно окончательный.

0
задан Amine KOUIS 5 March 2019 в 17:41
поделиться

1 ответ

Отредактированный ответ, вы можете добавить идентификаторы в ячейки и передать их для работы.

const changeColor = (elements, color) => {
  elements.forEach(el => {
    const element = document.querySelector(el);
    element.style.backgroundColor = color;
  })
}
.colorbox {
  width: 100px;
  height: 100px;
  background-color: aquamarine;
  margin-bottom: 10px;
}
<div class="colorbox" id="colorbox1"></div>
<div class="colorbox" id="colorbox2"></div>
<div class="colorbox" id="colorbox3"></div>

<button onclick="changeColor(['#colorbox1', '#colorbox3'], 'tomato')">Change 1 & 3 to tomato</button>

<button onclick="changeColor(['#colorbox1', '#colorbox2'], 'aliceblue')">Change 1 & 2 to aliceblue</button>

<button onclick="changeColor(['#colorbox2', '#colorbox3'], '#ff0000')">Change 2 & 3 to reddest</button>

0
ответ дан dporechny 5 March 2019 в 17:41
поделиться
Другие вопросы по тегам:

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