Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   обработка событий (https://javascript.ru/forum/misc/48886-obrabotka-sobytijj.html)

mixtape 21.07.2014 03:48

обработка событий
 
Всем привет!
Имеется 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)?

Rise 21.07.2014 05:43

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);
}

рони 21.07.2014 10:02

Цитата:

Сообщение от mixtape
почему в приведённом коде при клике на любую из ссылок парсится последняя

http://javascript.ru/basic/closure#p...-ispolzovaniya


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