У меня есть класс CSS для 3 ящиков ввода, называемый .rgb
. В этом классе .rgb
имеются три поля ввода с идентификаторами: #rgb
, #rgb2
и #rgb3
.Ввод прослушивателя событий не запускается для классов
Я пытаюсь захватить, когда какой-либо из трех полей ввода имеет текст, введенный с помощью .addEventListener
, хотя он не работает, когда я выбираю элементы по имени класса. Нет innerHTML не быть приложено
Ниже мой уменьшенный код для этого примера:
document.getElementsByClassName('rgb').addEventListener("input", function() {
// Stores the r, g, b values
var r = document.getElementById('rgb').value;
var g = document.getElementById('rgb2').value;
var b = document.getElementById('rgb3').value;
document.getElementById('rgb-output').innerHTML = 'RGB: rgb(' + r + ', ' + g + ', ' + b + ')';
document.getElementById('hex-output').innerHTML = 'HEX: ' + rgbToHEX(r, g, b).toUpperCase();
}, false);
Как я могу изменить код так, чтобы он прослушивал для входа на все трех полях ввода под .rgb
класса?
Если открыть консоль отладки вы увидите сообщение об ошибке. 'addEventListener' - это метод для элемента. 'getElementsByClassName' возвращает' NodeList' (подумайте об этом как о массиве). –
Вы не можете использовать 'addEventListener' в' document.getElementsByClassName', так как он возвращает массив DOM Elements (цикл на них) + 'input' может не быть событием, которое вы ищете, но' change' или 'blur' – topheman