Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.07.2014, 03:48
Интересующийся
Отправить личное сообщение для mixtape Посмотреть профиль Найти все сообщения от mixtape
 
Регистрация: 19.06.2014
Сообщений: 13

обработка событий
Всем привет!
Имеется textarea в форме, перед которой в цикле выводятся section. Необходимо, на каждую ссылку, находящуюся в section, повесить событие парсинга BB-кода в textarea.
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>title</title>
</head>
<body>
  <section id="123141">
    <a href="#">Fedya</a>
  </section>
  <section id="123142">
    <a href="#">Vasya</a>
  </section>
  <section id="123143">
    <a href="#">Petya</a>
  </section>
  <form action="#" method="get">
    <textarea id="area" name="txt" placeholder="Text"></textarea>
    <input type="submit" name="submit" value="Go">
  </form>
</body>
</html>

window.onload = function () {
      var sec = gt(document, "SECTION"),
          area = gi("area");
      for(var i = 0; i < sec.length; i++) {
        var link = gt(sec[i], "A")[0],
            name = link.firstChild.nodeValue;
        link.onclick = function (e) {e.preventDefault(); area.value = "[CODE]" + name + "[/CODE], " + area.value;};
      }
    };
    function gi(id) {
      return document.getElementById(id);
    }
    function gt(obj, tag) {
      return obj.getElementsByTagName(tag);
    }

Вопрос следующий - почему в приведённом коде при клике на любую из ссылок парсится последняя (то есть Petya)?

Последний раз редактировалось mixtape, 21.07.2014 в 03:53.
Ответить с цитированием
  #2 (permalink)  
Старый 21.07.2014, 05:43
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 456

mixtape,
window.onload = function(){
    var sec = gt(document, "SECTION"),
        area = gi("area");
    for(var i = 0; i < sec.length; i++){
        var link = gt(sec[i], "A")[0];
        link.onclick = function(e){e.preventDefault(); area.value = "[CODE]" + this.firstChild.nodeValue + "[/CODE], " + area.value;};
    }
};
function gi(id){
    return document.getElementById(id);
}
function gt(obj, tag){
    return obj.getElementsByTagName(tag);
}

Последний раз редактировалось Rise, 21.07.2014 в 06:28.
Ответить с цитированием
  #3 (permalink)  
Старый 21.07.2014, 10:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от mixtape
почему в приведённом коде при клике на любую из ссылок парсится последняя
http://javascript.ru/basic/closure#p...-ispolzovaniya
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка событий на динамически созданных объектах Alexey_R jQuery 28 15.02.2017 15:28
ie и другие браузеры - обработка событий torsar Javascript под браузер 1 24.05.2014 20:29
Обработка событий контекстного меню. grifangel Общие вопросы Javascript 2 18.02.2014 18:10
JQuery отложенная обработка событий hover DemonWather jQuery 2 09.03.2011 09:01
svg. обработка событий amigo* Элементы интерфейса 0 23.06.2010 22:31