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

Артист 28.09.2016 13:36

Спасибо ))

Ещё вопрос, почти по теме.
Как найти кнопку в таком коде:

<script type="text/javascript">
	function odOnClick(t)
	{
	   window.open('http://www.odnoklassniki.ru/oauth/authorize?client_id=25756160&response_type=code&redirect_uri=http://'+document.location.host+'/login_od.php','odnoklassniki','width=600,height=400');
	}
</script>

<table style="width:112px; height:30px;" border="0" cellpadding="0" cellspacing="0">
	<tr>
		<td style="width:28px; height:30px;">
			<div class="social">
				<a href="javascript:void(0);" class="menu09" onClick="vkOnClick(this); return false;">Вконтакте
					<span title="Войти через Вконтакте"></span>
				</a>
			</div>
			<br class="cleaner">
		</td>
	</tr>
</table>


Здесь так - то есть всё уже, просто я для гугл хрома делаю дополнение, а там нельзя скрипты в странице размещать.
Вот и переношу всё в .js файлы.

Артист 28.09.2016 13:38

document.querySelector('a[class="menu09"]') ?

рони 28.09.2016 14:03

Артист,
window.addEventListener('DOMContentLoaded', function() {
var item = document.querySelector('.social a');
 item.addEventListener('click', function(event) {event.preventDefault(); 
// ваш код

 })

});

Артист 28.09.2016 14:19

Ага, получилось ))
Спасиб ))


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