Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.08.2018, 16:01
Новичок на форуме
Отправить личное сообщение для link404 Посмотреть профиль Найти все сообщения от link404
 
Регистрация: 31.08.2018
Сообщений: 2

Идентификация нажатой кнопки
Добрый всем день. На странице имеется несколько кнопок:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="script.js"></script>
</head>
<body>
    <button type="submit" class="btn btn-primary btn-md" name="point" value="1">button 1</button>
    <button type="submit" class="btn btn-primary btn-md" name="point" value="2">button 2</button>
    <button type="submit" class="btn btn-primary btn-md" name="point" value="3">button 3</button>
</body>
</html>


хочу определить какая кнопка была нажата. Пишу так:

window.onload = () => {
    var buttons = document.getElementsByClassName("btn");
    if (buttons.length > 0) {
        for (var i = 0; i < buttons.length; i++) {
            buttons[i].onclick = receiver(buttons[i]);
        }
    }
};

function receiver(val) {
    console.log("click: " + val.value);
}


почему в консоли при релоаде страницы вижу это?
Код:
click: 1
click: 2
click: 3
Ведь нажатий по кнопкам еще не было. Вдобавок при клике на них ничего не происходит. Что я делаю не так? Заранее спасибо.
Ответить с цитированием
  #2 (permalink)  
Старый 31.08.2018, 16:29
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,590

Что cделает следующий код, что окажется в foo?
function plus(a, b){
  return a + b
}
foo = plus(2, 2);

А теперь по аналогии:
foo.onclick = receiver(bar);
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 31.08.2018, 16:35
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от link404
console.log("click: " + val.value);
Замени на
return function(){console.log("click: " + val.value);};


<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<!--
<script src='https://code.jquery.com/jquery-latest.js'></script>
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
window.onload = () => {
    var buttons = document.getElementsByClassName("btn");
    if (buttons.length > 0) {
        for (var i = 0; i < buttons.length; i++) {
            buttons[i].onclick = receiver(buttons[i]);
        }
    }
};
function receiver(val) {
    return function(){alert("click: " + val.value);};
}
</script>
</head>
<body>
    <button type="submit" class="btn btn-primary btn-md" name="point" value="1">button 1</button>
    <button type="submit" class="btn btn-primary btn-md" name="point" value="2">button 2</button>
    <button type="submit" class="btn btn-primary btn-md" name="point" value="3">button 3</button>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 31.08.2018, 16:46
Новичок на форуме
Отправить личное сообщение для link404 Посмотреть профиль Найти все сообщения от link404
 
Регистрация: 31.08.2018
Сообщений: 2

Ага, понял в чем была ошибка. Большое всем спасибо!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как зафиксировать кнопки чтобы они оставались на одном месте? mikefromru Элементы интерфейса 5 14.06.2017 23:15
Кнопки с одинаковым box.top Synth Общие вопросы Javascript 20 22.12.2016 22:32
Показ следующего числа в зависимости от нажатой кнопки TTATPuOT jQuery 1 09.10.2015 18:56
Считать надпись на нажатой кнопки kleoim Элементы интерфейса 11 03.02.2014 05:39
Получить код нажатой кнопки при клике. AllanZ Элементы интерфейса 7 03.06.2012 18:54