Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 23.05.2016, 10:24
Новичок на форуме
Отправить личное сообщение для shokoMoko Посмотреть профиль Найти все сообщения от shokoMoko
 
Регистрация: 22.05.2016
Сообщений: 8

Как вытянуть текущий элемент по клику
Помогите разобраться , не могу понять в чем ошибка.. В общем задача следуюшая , нужно что бы вытягивался элемент из 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;
Заранее Спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 23.05.2016, 10:35
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Вижу велосипед с квадратным колесом, а второе пожалуй октаэдр
Ответить с цитированием
  #3 (permalink)  
Старый 23.05.2016, 10:46
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

http://learn.javascript.ru/event-delegation вот, может пригодится
Ответить с цитированием
  #4 (permalink)  
Старый 23.05.2016, 10:58
Новичок на форуме
Отправить личное сообщение для shokoMoko Посмотреть профиль Найти все сообщения от shokoMoko
 
Регистрация: 22.05.2016
Сообщений: 8

Ну я новичек в js да и вообще новичек) Поэтому не без экспериментов)За статью спасибо , но если можно , объясните плз, что не так в моем подходе..
Ответить с цитированием
  #5 (permalink)  
Старый 23.05.2016, 11:23
Кандидат Javascript-наук
Отправить личное сообщение для aklis Посмотреть профиль Найти все сообщения от aklis
 
Регистрация: 27.04.2015
Сообщений: 99

Ну я тоже далеко не гуру и даже мимо не проходил
Не знаю даже как выразить в словах свои чувства. В load window не надо было запускать gtClassName('B'). В переменную все равно попали бы все элементы. Тут не надо отслеживать загрузилась ли страница. Зачем использовать with я вообще не понимаю, а особенно когда туда глобальный объект передается.
Настоятельно рекомендую забыть всякую чушь вроде jQuerry и хотябы просто прочитать учебник Ильи. Больше полезного узнаете, априори.
Ответить с цитированием
  #6 (permalink)  
Старый 23.05.2016, 21:12
Новичок на форуме
Отправить личное сообщение для shokoMoko Посмотреть профиль Найти все сообщения от shokoMoko
 
Регистрация: 22.05.2016
Сообщений: 8

Rise,спасибо, доходчиво , все понятно и ясно) . Я ж собственно и обратился к людям , что бы получить такой ответ, плохо , что не могу плюсануть))))
Ответить с цитированием
  #7 (permalink)  
Старый 24.05.2016, 13:02
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

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

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

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

Последний раз редактировалось Dilettante_Pro, 24.05.2016 в 13:05.
Ответить с цитированием
  #8 (permalink)  
Старый 24.05.2016, 22:39
Новичок на форуме
Отправить личное сообщение для shokoMoko Посмотреть профиль Найти все сообщения от shokoMoko
 
Регистрация: 22.05.2016
Сообщений: 8

Rise, в процессе , следую вашему совету и ярлык , что вы повесили ношу под сердцем...Проблему решил благодаря вашим советам ..СПАСИБО)))
Ответить с цитированием
  #9 (permalink)  
Старый 24.05.2016, 22:47
Новичок на форуме
Отправить личное сообщение для shokoMoko Посмотреть профиль Найти все сообщения от shokoMoko
 
Регистрация: 22.05.2016
Сообщений: 8

Dilettante_Pro, Да я понял в чем ошибка была и решил, там все не так сложно и было), а по поводу with(this) это я в книге пример видел , такой прием используется как было описано для того, что бы при инициализации свойств ненадо было писать каждый раз this просто как бы для удобства и не более...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление скроллом "а-ля тач" HonesT Элементы интерфейса 2 27.08.2013 14:25
как удалить элемент в DOM? czp Общие вопросы Javascript 11 17.12.2011 20:55
Как получит ссылку на элемент внутри которого запустили JS код? aRpi Events/DOM/Window 20 02.10.2011 13:36
имея this как удалить элемент из тела html clgs Общие вопросы Javascript 1 13.05.2009 17:55
Как передать элемент в функцию после createElement Oleg NT Общие вопросы Javascript 3 23.06.2008 02:11