Javascript: Как мне выполнить действие одним нажатием кнопки?

0

Каков правильный синтаксис для нажатия кнопки, а Javascript запускает любое выражение, которое у вас есть? Я сделал поиск Google, но есть несколько способов, или люди не очень хорошо объясняют параметры или функции.

Вот мой код. Все, что я хочу сделать, это когда я нажимаю "атаку" на свою "кнопку", монстр потеряет 10 л.с.

 document.getElementById("attack").click(); = dragon.hp = dragon.hp - 10;
Теги:

4 ответа

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

Когда вы делаете .click() вы вызываете функцию. ; как вы заканчиваете утверждения. Вы хотите назначить функцию свойству onclick.

Вы хотите что-то вроде этого:

document.getElementById("attack").onclick = function(){
    dragon.hp -= 10;
};

Еще лучше, вы действительно хотите:

document.getElementById("attack").addEventListener('click', function(){
    dragon.hp -= 10;
});

PS dragon.hp -= 10; является сокращением для dragon.hp = dragon.hp - 10;

0

Чтобы расширить ответ на библиотеку jQuery, вы можете сделать это (после вызова библиотеки jQuery)

$("#attack").on('click', function(){
    dragon.hp -= 10;
});

или, если кнопка #attack создается динамически

$(document).on('click', "#attack", function(){
        dragon.hp -= 10;
    });
0

Если вы сделали что-то вроде этого:

            <a ..... onClick="deductHpPoints()">...</a>

Затем в вашем javascript:

            Function deductHpPoints()
            {
              //deduct logic
             }

Будет ли это работать на вас? Для чего-то основного.

0

Вот что я буду делать:

<input type="button" value="Attack" onclick="attack()">

И тогда везде, где живет ваш JavaScript:

function attack() {
    dragon.hp -= 10;
};

Фактически, я бы сделал атаку способной ориентироваться на разные вещи:

function attack(target) {
    target.hp -= 10;
};

Возможно, некоторые переключатели для выбора цели:

<input type="radio" name="monster" value="Dragon">
<input type="radio" name="monster" value="Beholder">
<input type="radio" name="monster" value="Minotaur">

Некоторый код, чтобы узнать, какой из них был выбран:

function discoverSelected(buttonName) {
    var theArray = document.getElementsByName(buttonName);
    for (var i = 0; i < theArray.length; i++) {
        if (theArray[i].checked) {
            return theArray[i].value;
        };
    };
};

Сравните это имя с массивом монстров:

function whichMonster(monName) {
    for (var i = 0; i < monsters.length; i++) {
        if (monsters[i].name == monName) {
            return monsters[i];
        };
    };
};

Затем, наконец, кнопка для атаки!

<input type="button" value="Attack" onclick="attack(whichMonster(discoverSelected("monster")))">

Ещё вопросы

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