Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как вытянуть текущий элемент по клику (https://javascript.ru/forum/misc/63195-kak-vytyanut-tekushhijj-ehlement-po-kliku.html)

shokoMoko 23.05.2016 10:24

Как вытянуть текущий элемент по клику
 
Помогите разобраться , не могу понять в чем ошибка.. В общем задача следуюшая , нужно что бы вытягивался элемент из html по клику на нем и предположим выводилось значение этого элемента alertом.
window.onload=function(){
gtClassName('B');
}


function gtClassName(nameClass){

with(this){


ObjectAdd = document.getElementsByClassName(nameClass);

ObjectAdd.addEventListener('click' , outDate);
function outDate(){
alert(this);
}

}
}




Проделывал такое с помощью jq, но на чистом js не получается.При выборке по id работает , а по классу выдает в консоли ошибку:
TypeError: ObjectAdd.addEventListener is not a function;
Заранее Спасибо!

aklis 23.05.2016 10:35

Вижу велосипед с квадратным колесом, а второе пожалуй октаэдр:yes:

aklis 23.05.2016 10:46

http://learn.javascript.ru/event-delegation вот, может пригодится:)

shokoMoko 23.05.2016 10:58

Ну я новичек в js да и вообще новичек) Поэтому не без экспериментов)За статью спасибо , но если можно , объясните плз, что не так в моем подходе..

aklis 23.05.2016 11:23

Ну я тоже далеко не гуру и даже мимо не проходил:)
Не знаю даже как выразить в словах свои чувства. В load window не надо было запускать gtClassName('B'). В переменную все равно попали бы все элементы. Тут не надо отслеживать загрузилась ли страница. Зачем использовать with я вообще не понимаю, а особенно когда туда глобальный объект передается.
Настоятельно рекомендую забыть всякую чушь вроде jQuerry и хотябы просто прочитать учебник Ильи. Больше полезного узнаете, априори.

Rise 23.05.2016 12:22

Цитата:

Сообщение от shokoMoko (Сообщение 417354)
объясните плз, что не так в моем подходе..

Василий основы почитай сначала прежде чем что-то писать здесь...

shokoMoko 23.05.2016 21:12

Rise,спасибо, доходчиво , все понятно и ясно) . Я ж собственно и обратился к людям , что бы получить такой ответ, плохо , что не могу плюсануть))))

Rise 24.05.2016 12:55

shokoMoko, почитал уже что-ли?

Dilettante_Pro 24.05.2016 13:02

shokoMoko,
1. with(this) - что вы этим хотели сказать? У вас на этот момент нет текущего объекта. И вообще - зачем?

2. ObjectAdd = document.getElementsByClassName(nameClass); - это HTML коллекция элементов с выбранным классом (почти массив, но не совсем, поддерживает не все методы для массивов), соответственно, его надо обрабатывать циклом и назначать обработчик каждому элементу.

3. alert(this); - что вы хотите увидеть? В лучшем случае вы увидите [object HTML .....]
Больше смысла в, например, alert(this.id); - чтобы убедиться, что это именно тот элемент.
А вообще - для начала пишите как можно проще, пользуясь понятными вам конструкциями

shokoMoko 24.05.2016 22:39

Rise, в процессе , следую вашему совету и ярлык , что вы повесили ношу под сердцем...Проблему решил благодаря вашим советам ..СПАСИБО)))


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