Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите назначить обработчик для всех чекбоксов? (https://javascript.ru/forum/misc/65125-pomogite-naznachit-obrabotchik-dlya-vsekh-chekboksov.html)

Артист 28.09.2016 12:44

Помогите назначить обработчик для всех чекбоксов?
 
Не работает ничего :(

function save_checkbox(check) // В функцию передается индекс объекта
{
	var name = check.id // Получить id(имя) объекта
	localStorage[name] = check.checked ? 1 : 0 // Записать в память ключ = состояние

	alert('12 ' + name) // Поверка. Вообще не вызывается ((
}

document.addEventListener("DOMContentLoaded", function() // После загрузки всех объектов на странице
{
	var list = document.querySelectorAll("checkbox") // Найти список чекбоксов

	for(var i = 0; i < list.length; i++) // Цикл по списку
	{
		list[i].addEventListener('click', save_checkbox) // Назначить чекбоксу обработчик, передать в него его индекс
	}
})


На странице чекбоксов около 20.

<td align="center"><input type="checkbox" id="123sf"></td>
<td align="center"><input type="checkbox" id="32dfs"></td>
<td align="center"><input type="checkbox" id="4df"></td>
<td align="center"><input type="checkbox" id="df34"></td>



Нужно чтобы при клике какого - то из них вызвалась функция save_checkbox и в неё передался индекс чекбокса.

рони 28.09.2016 13:01

Цитата:

Сообщение от Артист
В функцию передается индекс объекта

возможно вы этого хотели, но этого в вашем коде нет??? и нафига?
Цитата:

Сообщение от Артист
// Найти список чекбоксов

возможно вы этого хотели, но этого в вашем коде нет???

Артист 28.09.2016 13:03

О, вот так начал работать обработчик:

var list = document.querySelectorAll('input[type="checkbox"]') // Найти список чекбоксов


Но идентификатор чекбокса не передаётся...

рони 28.09.2016 13:05

Артист,
function save_checkbox()
{
  var name = this.id // Получить id(имя) объекта
  localStorage[name] = this.checked ? 1 : 0 // Записать в память ключ = состояние

  alert('12 ' + name) // Поверка. Вообще не вызывается ((
}

document.addEventListener("DOMContentLoaded", function() // После загрузки всех объектов на странице
{
  var list = document.querySelectorAll('[type="checkbox"]') // Найти список чекбоксов

  for(var i = 0; i < list.length; i++) // Цикл по списку
  {
    list[i].addEventListener('click', save_checkbox) // Назначить чекбоксу обработчик, передать в него его индекс
  }
})

Артист 28.09.2016 13:06

Цитата:

Сообщение от рони (Сообщение 430107)
возможно вы этого хотели, но этого в вашем коде нет??? и нафига?

возможно вы этого хотели, но этого в вашем коде нет???

Да я вообще не понимаю в java ничего.
Подправьте пожалуйста.

В функции save_checkbox я использую id="123sf" как ключ для сохранения.
Поэтому нужно как - то его получить в функцию должно же что - то передаться...

Артист 28.09.2016 13:07

Цитата:

Сообщение от рони (Сообщение 430109)
Артист,
function save_checkbox()
{
  var name = this.id // Получить id(имя) объекта
  localStorage[name] = this.checked ? 1 : 0 // Записать в память ключ = состояние

  alert('12 ' + name) // Поверка. Вообще не вызывается ((
}

document.addEventListener("DOMContentLoaded", function() // После загрузки всех объектов на странице
{
  var list = document.querySelectorAll('[type="checkbox"]') // Найти список чекбоксов

  for(var i = 0; i < list.length; i++) // Цикл по списку
  {
    list[i].addEventListener('click', save_checkbox) // Назначить чекбоксу обработчик, передать в него его индекс
  }
})

Ааа, вон оно как ))
Спасибо большое ))

рони 28.09.2016 13:09

Артист,
http://javascript.ru/forum/jquery/59...tml#post394089

Артист 28.09.2016 13:13

Я просто загрузку убрал, так - то готово всё:
function save_checkbox()
{
	localStorage[this.id] = this.checked ? 1 : 0
}
function load_checkbox()
{
	var table = document.getElementById('resources')
	var input = table.getElementsByTagName('input')

	for(var i = 0; i < input.length; i++)
	{
		var check = input[i]
		check.checked = localStorage[check.id] == '1' ? true : false
	}
}
document.addEventListener("DOMContentLoaded", function()
{
	var list = document.querySelectorAll('[type="checkbox"]')
	for(var i = 0; i < list.length; i++)
	{
		list[i].addEventListener('click', save_checkbox)
	}
	load_checkbox()
})

рони 28.09.2016 13:15

Артист,
http://javascript.ru/forum/events/36...tml#post393045

рони 28.09.2016 13:18

Артист,
если инпуты в таблице, достаточно установить клик только на таблицу.
https://learn.javascript.ru/event-delegation


Часовой пояс GMT +3, время: 08:21.