#javascript #css #onclick #addeventlistener
Вопрос:
Я пытаюсь создать слайд-шоу, но addEventListener не работает!!
я новичок в мире js и хочу стать лучше с помощью проектов, но этот простой проект поставил меня в тупик.
const nextBtn = document.querySelector(".next-btn");
const prevBtn = document.querySelector(".prev-btn");
const slides = document.querySelectorAll(".slide");
const slider = document.querySelector(".slider");
const slideIcons = document.querySelectorAll(".slide-icon");
// selecting total number of slides
const numberOfSlides = slides.length;
// whatever
const slideNumber = 0;
// manual functionality
// next-btn
nextBtn.addEventListener("click" ,() => {
slides.forEach(slide =>{
slide.classList.remove("actve");
});
slideIcons.forEach((slideIcon) => {
slideIcon.classList.remove("active");
});
})
Комментарии:
1. Вы могли бы попытаться добавить журнал консоли перед
addEventListener
, чтобы увидеть, является лиnextButton
это правильным элементом, затем вы могли бы попытаться добавить другой элемент в обратный вызов события, чтобы увидеть, запущено ли оно2. Вы уверены
actve
, что это неactive
первый класс, который вы пытаетесь удалить?
Ответ №1:
Я не понимаю всей ситуации, но, как я вижу, вам нужно добавить прослушиватель событий к вашему слайдеру, поэтому я дам вам пример обработчика событий слайдера диапазона
// this stores the value at startup (which is why you're always getting 1)
var rangeInput = document.getElementById("rangeinput").value;
Вместо этого вы должны читать значение в обработчике:
function testtest(e) {
// read the value from the slider:
var value = document.getElementById("rangeinput").value;
// now compare:
if (value > 0 amp;amp; value < 5) {
alert("First");
} else {
alert("Second");
}
}
теперь обновление значения диапазона
Также похоже, что вы хотите обновить выходной элемент значением диапазона. То, что вы сейчас делаете, — это обращение к элементу по идентификатору:
onchange="rangevalue.value=value"
Однако, насколько я знаю, это не стандартное поведение; вы не можете ссылаться на элементы только по их идентификатору; вы должны извлечь элемент, а затем установить значение через DOM.
Могу ли я предложить вам добавить прослушиватель изменений с помощью javascript:
rangeInput.addEventListener("change", function() {
document.getElementById("rangevalue").textContent = rangeInput.value;
}, false);
Конечно, вам придется обновить код, чтобы использовать addEventListener или attachEvent в зависимости от браузеров, которые вы хотите поддерживать; именно здесь jQuery действительно становится полезным.
Для этого используйте событие наведения курсора мыши. var rangeInput = document.getElementById(«rangeinput»);
rangeInput.addEventListener('mouseup', function() {
if (this.value > 0 amp;amp; this.value < 5) {
alert("First");
} else{
alert("Second");
}
});
Вы также можете использовать метод FORMs oninput:
<form oninput="result.value=parseInt(a.value) parseInt(b.value)">
<input type="range" name="b" value="50" />100
<input type="number" name="a" value="10" /> =
<output name="result"></output>
</form>
Это имеет преимущество перед onclick / onmouseup, поскольку оно обрабатывает случай, когда ползунок перемещается с помощью клавиатуры (табуляция для ввода и использование клавиш со стрелками)
Ответ №2:
Попробуйте присвоить элементам html идентификатор, а затем использовать getElementById
вместо querySelector