обработчик onclick для тегов <a>, узнать, какой тег был нажат - PullRequest
1 голос
/ 23 ноября 2010

У меня 5 якорных тегов на моей странице.Теперь, когда один из этих тегов щелкается, я хочу вызвать функцию JavaScript, в этой функции мне нужно выяснить, какой из якорей был нажат.это в чистом JavaScript или с додзё.

Ответы [ 3 ]

3 голосов
/ 23 ноября 2010
var anchors = document.getElementsByTagName("a");

for(var i = 0; i < anchors.length; i++) {
    anchors[i].onclick = function() {
        alert(this.id);
        doStuff(id);
        return false;   
    }
}

Демо: http://jsfiddle.net/FVWqT/1/

Обратите внимание: если у вас есть более пяти якорей, и вы хотите настроить таргетинг только на определенные, вы можете фильтровать по классу, например:

var anchors = document.getElementsByTagName("a");

for(var i = 0; i < anchors.length; i++) {
    if(anchors[i].className == "something") {
        anchors[i].onclick = function() {
            alert(this.id);
            doStuff(id);
            return false;   
        }
    }
}
1 голос
/ 23 ноября 2010

Не нужно сложных конструкций, попробуйте сами в адресной строке:

javascript:(
  function () {
    for (var i=0; i<document.links.length; i++)
      document.links[i].onclick = function () {
        return confirm(this.href+'\nORLY?')
      };
  }
)();
1 голос
/ 23 ноября 2010

Вместо определения обработчика onclick для каждой ссылки на странице, для повышения производительности вы можете использовать делегирование событий в контейнере ссылок (этот метод идеально подходит для вашей задачи), например,

(function() {
   var divcnt = document.getElementById('linkcnt');
    divcnt.onclick = function(evt) {

        var event = (evt || window.event),
            target = (event.target || event.srcElement);

        if (evt.target.tagName === 'A') {
           // event.target is DOM reference to link you clicked
           // evt.target.id  is the ID;
           alert(evt.target.id);

           //callmyfunction(event.target) // Call a function with DOM reference
        }
    }
})();

См. Рабочийпример здесь: http://jsfiddle.net/fcalderan/MSvvh/

...