Вход

Просмотр полной версии : Как подвесить события к полученным по атрибутам name через this инпутам


kusnecow
18.09.2018, 22:35
Подскажите, как подвесить события к полученным по атрибутам name через this инпутам :help:

<script>

window.onload = function(e) {
var buttons = document.querySelectorAll('.actions input');
for (var i = 0; i < buttons.length; i++) {
buttons[i].onclick = btnClick;
}

}
function btnClick(e) {
var name = this.getAttribute ('name');

if ( name == 'save') {
console.log(1);
}
else if ( name == 'delete') {
console.log(2);
}
}

</script>

рони
18.09.2018, 22:48
kusnecow,
:-? подожду переводчика
и
Пожалуйста, отформатируйте свой код!

Для этого его можно заключить в специальные теги: js/css/html и т.п., например:


... ваш код...



О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.

рони
18.09.2018, 22:48
kusnecow,
что не работает или хочется сделать?

kusnecow
18.09.2018, 23:56
<div class="actions">
<input type="button" name="save" value="сохранить"/>
<input type="button" name="delete" value="удалить"/>
</div>

var buttons = document.querySelectorAll('.actions input');
for (var i = 0; i < buttons.length; i++) {
buttons[i].onclick = btnClick;
}

}
function btnClick(e) {
var name = this.getAttribute ('name');

if ( name == 'save') {
console.log(1);
}
else if ( name == 'delete') {
console.log(2);
}

не знаю как подвесить события при нажатии на кнопки:agree: :help:

рони
18.09.2018, 23:59
не знаю как подвесить события при нажатии на кнопки
не могу осилить, подожду знатоков.

рони
19.09.2018, 00:01
kusnecow,
всё у вас работает, что ещё не хватает?

kusnecow
19.09.2018, 00:08
не хватает мозгов как например поменять бекграунд кнопок при нажатии. если вешать на name, отладчик пишет что TypeError: name.classList is undefined

рони
19.09.2018, 00:12
kusnecow,
<!DOCTYPE html>

<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
.red {
background-color: #FF0000;
}

</style>

</head>

<body>
<div class="actions">
<input type="button" name="save" value="сохранить"/>
<input type="button" name="delete" value="удалить"/>
</div>

<script>

window.onload = function(e) {
var buttons = document.querySelectorAll('.actions input');
for (var i = 0; i < buttons.length; i++) {
buttons[i].onclick = btnClick;
}

}
function btnClick(e) {
var name = this.getAttribute('name');

if ( name == 'save') {
this.classList.add("red");

}
else if ( name == 'delete') {
alert(2);
}
}

</script>

</body>
</html>

kusnecow
19.09.2018, 01:07
О КРУТО, СПАСИБО)

laimas
19.09.2018, 05:53
var name = this.getAttribute('name');


А почему не просто this.name ?

kusnecow
19.09.2018, 22:40
name это переменная. а 'name' это атрибут инпута. мы получаем атрибут инпута и кладем в переменную.

laimas
20.09.2018, 04:16
name это переменная. а 'name' это атрибут инпута

Это в пользовательском атрибуте ковыряться придется, а name, id, ... доступны и так = this.name, this.id, .... Объект в консоль и смотрим.