[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: [javascript] Обработка событий по клику
Гость_Вьетнамский лётчик
Всем дня.
Третьи сутки изучаю javascript и столкнулся с вызовом событий по onclick. Дело в том, что:
1) Я не хочу указывать на ссылках явно onclick=”blabla()”
2 )Из первого пункта рождается код обходящий мазохизм с html, то есть обработчик перемещаем в сам код js:


var eventP = document.getElementById("eventP");
eventP.onclick = function dwdf() {
//что делаем при клике по элементу <p id="eventP">qwerty</p>
};


3) Из второго пункта вытекает куча кода, а хотелось бы создать некую “обертку”, благодаря которой я могу только указывать ID элемента и писать функцию при onclick по нему. То есть пишем один раз определенную функцию и каждый раз вызываем ее, указывая в параметрах ID тег и как-то пишем функционал.

Я не знаю как, но что-то типа:


var idtag = document.getElementById("idtag ");
function convertIdToVar(idtag){
...
}
...
convertIdToVar(eventP){
//что делаем при клике по элементу <p id="eventP">qwerty</p>
}


Как создать нечто подобное не потонув в абстракциях? Что почитать? Вопрос создан по причине скудности учебного материала который я сейчас изучаю, а мне напротив хотелось бы знать ответ на простой казалось бы вопрос — как вешать onclick на десятки элементов при этом не загромождая код?
Заранее спасибо.
bodja
Гость_Вьетнамский лётчик
Хорошо, что вы собираетесь делать с onclick для каждой отдельной кнопки.
Не будет же она выполнять одно и тоже?
В целом могу сказать ,3 дня это не тот срок при котором нужно думать про оптимизацию и красоту кода.Стоит набраться опыта и все станет на свои места само собой.

Цитата
onclick на десятки элементов при этом не загромождая код?

ООП biggrin.gif , если очко не жим-жим могу рассказать.
Гость_Вьетнамский лётчик
Очко не жим жим :lol: Что я вас напрягать то буду? Сам докумекаю.
Мне вот ерзит узнать по какой причине в javascript нельзя напрямую вызывать элементы через классы… Почему с ID так просто?
ID
	
<h2 id="hhh">тут необходжимо что-нибудь написать 4</h2>
<script
type="text/javascript">
var
hhh = document.getElementById('hhh');
hhh.firstChild.nodeValue = "lol";
</script>

CLASS
	
<h2 class="hhh">тут необходжимо что-нибудь написать 4</h2>
<script
type="text/javascript">
var
hhh = document.getElementsByClassName('hhh');

for (var i = 0; i < hhh.length; i++) {
hhh[0].innerHTML = 'lol';
}
</script>


Может мне чего не по шарам? :ph34r:
Игорь_Vasinsky
а ты кокого эффекта ждёшь?

по шарам то в одном месте

Цитата
for (var i = 0; i < hhh.length; i++) {
  hhh[0].innerHTML = 'lol';
  }


ты цикл для первого элемента крутишь

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
bodja
Ссылки на все елементы вы уже получили через,
hhh = document.getElementsByClassName('hhh');

Что вас не устраивает?
То что вы называете классом, относится к CSS и прямого отношения к JS не имеет.
Guest
Цитата
ты цикл для первого элемента крутишь

да ладно?? я то сам не понял что написал…
Цитата
Ссылки на все елементы вы уже получили через,

но в данном конкретном случае я же не могу сделать вот так:
hhh = document.getElementsByClassName('hhh');
hhh.innerHTML = 'lol';
killer8080
Цитата (Guest @ 19.10.2012 - 12:30)
но в данном конкретном случае я же не могу сделать вот так:
hhh = document.getElementsByClassName('hhh');
hhh.innerHTML = 'lol';

зато можешь так
document.getElementsByClassName('hhh')[0].innerHTML = 'lol';
bodja
или так
hhh[0].innerHTML = 'lol'

getElementsByClassName вам вернет массив с сылками на элементы,естественно с ним потом нужно работать как с массивом.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.