На данный вопрос уже ответили:
Добрый день! Имеется такой код:
<article>
<div id="input">
<p>
<input id="input" />
<button id="uah" class="active" onclick="currency='uah'; selectCurrency()">UAH</button>
<button id="usd" class="inactive" onclick="currency='usd'; selectCurrency()">USD</button>
<button id="eur" class="inactive" onclick="currency='eur'; selectCurrency()">EUR</button>
<button id="rub" class="inactive" onclick="currency='rub'; selectCurrency()">RUB</button>
</p>
</div>
</article>
JavaScript для него:
<script>
function selectCurrency() {
console.log("Selected currency: " + currency);
document.querySelectorAll("article div#input p button").classList.add("inactive");
document.querySelectorAll("article div#input p button").classList.remove("active");
document.querySelector("article div#input p button#" + currency).classList.remove("inactive");
document.querySelector("article div#input p button#" + currency).classList.add("active");
}
При нажатии на USD вываливается ошибка.
Uncaught TypeError: Cannot read property 'add' of undefined
Не могу понять, что не так?
querySelectorAll возвращает коллекцию элементов очень похожую на массив, чтобы добавить или удалить класс, надо по ней пройтись и каждому элементу добавить. А вы пытаетесь коллекции добавить. Должно быть так
function selectCurrency() {
console.log("Selected currency: " + currency);
var buttons = document.querySelectorAll("article div#input p button");
for (var i = 0; i < buttons.length; i++) {
var el = buttons.item(i);
if (el.id !== currency) {
el.classList.add("inactive");
el.classList.remove("active");
} else {
el.classList.add("active");
el.classList.remove("inactive");
}
}
}
.inactive {
background-color: gray;
}
.active {
background-color: green;
}
<article>
<div id="input">
<p>
<input id="input" />
<button id="uah" class="active" onclick="currency='uah'; selectCurrency()">UAH</button>
<button id="usd" class="inactive" onclick="currency='usd'; selectCurrency()">USD</button>
<button id="eur" class="inactive" onclick="currency='eur'; selectCurrency()">EUR</button>
<button id="rub" class="inactive" onclick="currency='rub'; selectCurrency()">RUB</button>
</p>
</div>
</article>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Скажите, пожалуйста, как можно получить элемент ячейки таблицы (HTMLTableDataCellElement), если я знаю индексы строки и столбца, на пересечении которых...
Насколько я понимаю, trigger("reset") должен очищать поля формы, после отправкиПочему этого не происходит ?
Получаю от сервера данные в таком виде /Date(-62135575200000)/, что это за формат времени? Как из него получить читаемую дату используя javascript?