Как вызвать слушателей событий через JavaScript

0

У меня есть 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/ Я отвечу на тех приятных людей, которые помогают мне :) Спасибо!

  • 0
    Вы действительно хотите использовать слово «триггер»? «Запустить» событие - это вызвать событие; ваш код просто устанавливает некоторые обработчики событий.
  • 0
    Да, и я хочу заставить их работать.
Показать ещё 5 комментариев
Теги:

2 ответа

3
Лучший ответ

Ну, например, вы используете 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 относится к элементу divthis.value вы привязали свой обработчик).

Три способа обойти это:

  1. Прикрепите обработчики к вашим входным элементам, а не к div.
  2. Получите элементы ввода после вызова обработчика.
  3. Получите элементы ввода перед установкой ваших обработчиков и передайте элементы в качестве параметра вашим обработчикам.

FIDDLE

  • 0
    Ну, первый слушатель плохо написал (я это исправил), но все равно он не работает.
  • 0
    Вы имели в виду что-то вроде этого: jsfiddle.net/mf2xD/2 ? Я обновил, но все еще функции не могут быть загружены при нажатии кнопки.
Показать ещё 2 комментария
2
window.onload = eListeners();

должно быть

window.onload = eListeners;

Вам нужно, чтобы обработчик "onload" был самой функцией, а не результатом вызова функции.

Теперь, когда вы сказали, ваш вопрос говорит о запуске событий. Код, который вы только что установили обработчики событий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню