У меня есть 2 кнопки (1 подача и 1 сброс). Я хочу вызвать следующие события: onmousedown, onmouseup, onmouseover и onmouseout. Я тестировал свой код, но он не работает:/. Не могли бы вы помочь мне это исправить? HTML:
<div class="buttonwrap">
<div id="eventlisten1">
<input type="submit" value="Submit" name="submit" />
</div>
<div class="eventlisten2">
<input type="reset" value="Reset" name="reset" />
</div>
</div>
Javascript:
function mDown(obj) {
obj.value = "Submitted!"
}
function mUp(obj) {
obj.value = "Thank you!"
}
function mOver(obj) {
obj.style.backgroundColor = "blue";
}
function mOut(obj) {
obj.style.backgroundColor = "yellow";
}
function eListeners() {
var eventlisten1 = document.getElementByClassName('eventlisten1');
var eventlisten2 = document.getElementByClassName('eventlisten2');
eventlisten1.addEventListener('mousedown', mDown, false);
eventlisten1.addEventListener('mouseup', mUp, false);
eventlisten2.addEventListener('mouseover', mOver, false);
eventlisten2.addEventListener('mouseout', mOut, false);
}
window.onload = eListeners();
CSS (для некоторых стилей):
.buttonwrap {
position:absolute;
z-index:0;
width:200px;
background:#ccc;
}
input[type=submit] {
padding:10px;
margin:10px 0px 0px -1px;
width:90px;
background-color:#00ff00;
float:left;
border-radius:5px;
}
input[type=reset] {
padding:10px;
margin:10px 0px 0px 15px;
width:90px;
background-color:red;
float:left;
border-radius:5px;
}
Вот сценарий: http://jsfiddle.net/mf2xD/2/ Я отвечу на тех приятных людей, которые помогают мне :) Спасибо!
Ну, например, вы используете getElementByClassName()
когда элемент не имеет класса:
var eventlisten1 = document.getElementByClassName('eventlisten1'); // This one has no class
var eventlisten2 = document.getElementByClassName('eventlisten2');
Вторая проблема - неправильное обращение. getElement
должен быть множественным, если вы выбираете на основе класса.
Попробуй это:
var elTwo = document.getElementsByClassName('eventlisten2')[0];
Вышеупомянутый должен возвращать первый сопоставленный элемент с классом eventlisten2
.
Третья проблема заключается в том, что в ваш обратный вызов не передается параметр obj
. Вам нужно ссылаться на this
Так что ваши слушатели должны выглядеть так:
function mDown() {
this.value = "Submitted!";
}
Однако this.value
фактически не будет работать, потому что this
относится к элементу div
(к this.value
вы привязали свой обработчик).
Три способа обойти это:
window.onload = eListeners();
должно быть
window.onload = eListeners;
Вам нужно, чтобы обработчик "onload" был самой функцией, а не результатом вызова функции.
Теперь, когда вы сказали, ваш вопрос говорит о запуске событий. Код, который вы только что установили обработчики событий.