Вариант 1 - $ refs
Для получения элемента из DOM используйте ref
. Если вы установите HTML для атрибута элемента ref
, например, <button ref="myButton">
, тогда вы можете изменить стиль так же, как в вашем коде: this.$refs.myButton.style.display="none"
Относительно циклов: ref
будет справка только в том случае, если элементы с одинаковым ref
были созданы v-for
. В этом случае this.$refs.<your ref>
будет массивом. Пример: допустим, у вас есть изображения, отображаемые v-for
с тем же ref
:
<img v-for="image in images" ref="imgSlide"...>
Тогда вы можете манипулировать this.$refs.imgSlide
как массивом:
this.$refs.imgSlide.forEach(el => el.style.display = 'none')
Вариант 2 - Привязки классов и стилей
Допустим, у вас есть <img id='imgModal'...>
. Вы хотите изменить display
в методе openModal. Выполните следующие шаги:
- Добавьте привязку стиля:
<img id='imgModal' :style="{ display: displayValue }"...
- Добавьте переменную привязки в данные и инициализируйте ее:
data: {
displayValue: 'none'
}
- Измените значение переменной связывания в методе:
openModal() {
this.displayValue = 'block'
}
При таком подходе вам не нужны циклы для изменения стиля для нескольких элементов. Изменение переменной привязки повлияет на все связанные с ней элементы.
Подробнее о Привязки классов и стилей
Специально для display = "none"
: не скрывать элементы путем изменения display
явно. Вместо этого используйте v-if
или v-show
.