Хочу по нажатию на стрелки изменять размер картинки на определённое число px. Но вместо этого срабатывает лишь раз и больше не меняется. Отчего так? и как правильно наладить. Чувствую что легко и логика понятна. Но вот с реализацией малость трудновато. Пока только учусь. Спасибо.
JS:
let inp = document.querySelector(".i-10");
let img = document.querySelector("img");
inp.onkeydown = function (e) {
console.log(e);
if (e.code == "ArrowUp") {
img.style.height += "50px";
}
}
HTML:
<input type="text" class="i-10">
<img src="https://telegram.org.ru/uploads/posts/2018-05/1526473044_9.png" alt="">
<script src="script.js"></script>
CSS:
img {
width: 150px;
height: 150px;
}
В условие добавьте код для определения текущего состояния(для IE свое):
let height = parseInt(window.getComputedStyle(img, null).height)
И как уже указали выше, задаем строчное значение:
img.style.height = `${height + 50}px`;
Так будет выглядеть весь код:
let inp = document.querySelector(".i-10");
let img = document.querySelector("img");
inp.onkeydown = function (e) {
console.log(e);
if (e.code == "ArrowUp") {
const height = parseInt(window.getComputedStyle(img).height)
img.style.height = `${height + 50}px`;
}
}
Подробнее: https://learn.javascript.ru/styles-and-classes
Можно немного упростить, если пока не удобна интерполяция:
let height = parseInt(window.getComputedStyle(img).height)
height += 50
img.style.height = height + 'px'
let inp = document.querySelector(".i-10");
let img = document.querySelector("img");
let i = 1;
inp.addEventListener('keydown', (e)=>{
if( e.code == 'ArrowUp' ){
let d = 50 * i;
img.style.height = d + 'px';
}
i++
})
img {
width: 150px;
height: 150px;
}
<input type="text" class="i-10">
<img src="https://telegram.org.ru/uploads/posts/2018-05/1526473044_9.png" alt="">
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости