Onclick в for
Надо вывести порядковый номер элемента при нажатии на него
<div class="tag"> <a href="#">qwerty</a> <a href="#">qwerty</a> <a href="#">qwerty</a> <a href="#">qwerty</a> </div> Делаю так t = document.getElementsByClassName('tag')[0].getElementsByTagName('a'); for(i=0;i<t.length;i++){ t[i].onclick = function(){ alert(i); } } В итоге алерт выдает пустату |
<div class="tag">
<a href="#">qwerty</a>
<a href="#">qwerty</a>
<a href="#">qwerty</a>
<a href="#">qwerty</a>
</div>
<script>
(function(){
var wrapper = document.getElementsByClassName('tag')[0];
var tags = Array.prototype.slice.call(wrapper.getElementsByTagName('a'));
wrapper.onclick = function(event) {
var index = tags.indexOf(event.target);
if (index !== -1) {
alert(index);
event.preventDefault();
}
};
})();
</script>
либо ваш вариант, исправленный:
<div class="tag">
<a href="#">qwerty</a>
<a href="#">qwerty</a>
<a href="#">qwerty</a>
<a href="#">qwerty</a>
</div>
<script>
(function(){
var wrapper = document.getElementsByClassName('tag')[0];
var tags = wrapper.getElementsByTagName('a');
for (var i = 0; i < tags.length; i ++) {
tags[i].onclick = (function(i) {
return function(event) { alert(i) };
})(i);
}
})();
</script>
|
| Часовой пояс GMT +3, время: 19:26. |