 
			
				01.03.2014, 02:07
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 16.01.2014 
					
					
					
						Сообщений: 50
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				узнать номер елемента в массиве при клике
			 
			
		
		
		
		есть 5 дивов, с классом а 
 
есть переменная myVar где -- > .getElementsByClassName('a'); 
 
потом addEvent.... и функция в которой нужно: 
 
 чтобы при клике на див у меня был alert с номером дива в массиве. 
 
Пример для того чтобы обратиться к одному из дивов мне нужно делать так : myVar[х]. 
 
нужно чтобы в "х" заганялся номер дива на которого я кликнул и выводился через alert 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось blacklool, 01.03.2014 в 02:25.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.03.2014, 02:40
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 30.04.2012 
					
					
					
						Сообщений: 3,018
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var myVar = document.getElementsByClassName('a');
myVar[0].parentNode.addEventListener('click', function(e) {
   var self = e.target;
   if(self.className != 'a') return;
   var i = myVar.length;
   while(i--) {
      if(myVar[i] == self) {
         var x = i;
         break;
      }
   }
   alert(x);
});
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.03.2014, 04:42
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 13.03.2013 
					
					
					
						Сообщений: 1,572
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
<style>
      div.a {
        padding:5px;
        margin: 5px;
        background-color: red;
        float: left;
      }
    </style>
    <div class="a">1</div>
    <div class="a">2</div>
    <div class="a">3</div>
    <div class="a">4</div>
    <div class="a">5</div>
    <script>
      (function () {
        var divs = document.querySelectorAll("div.a"),
          len = divs.length,
          i = 0;
        for (; divs[i].setAttribute("onclick", "clval(" + i + ")"), ++i < len;);
        clval = function (e) {
          alert(e);
        };
      }());
    </script>
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Vlasenko Fedor, 01.03.2014 в 04:50.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.03.2014, 05:13
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Фу setAttribute('onclick'), фу clval без var.   
<style>
  div.a {
    padding:5px;
    margin: 5px;
    background-color: red;
    float: left;
  }
</style>
<div class="a">1</div>
<div class="a">2</div>
<div class="a">3</div>
<div class="a">4</div>
<div class="a">5</div>
<script>
  (function () {
    var divs = document.querySelectorAll("div.a");
    var handler = function() {
        // var index = this.dataset.index;
        var index = this.getAttribute('data-index');
        alert(index);
    }
    for (var i = 0; i < divs.length; i++) {
        // divs[i].dataset.index = i;
        divs[i].setAttribute('data-index', i);
        divs[i].onclick = handler;
    }
  }());
</script>
ES5:
 
<style>
  div.a {
    padding:5px;
    margin: 5px;
    background-color: red;
    float: left;
  }
</style>
<div class="a">1</div>
<div class="a">2</div>
<div class="a">3</div>
<div class="a">4</div>
<div class="a">5</div>
<script>
  (function () {
    var divs = document.querySelectorAll("div.a");
    var handler = function() {
        var index = Array.prototype.indexOf.call(divs, this);
        alert(index);
    }
    for (var i = 0; i < divs.length; i++) {
        divs[i].onclick = handler;
    }
  }());
</script>
 
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.03.2014, 05:22
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Вообще, имхо, индекс нафиг не нужен, как и массив. Кликнутый див в колбэк и так передаётся через target/this.) 
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.03.2014, 21:58
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.02.2014 
					
					
					
						Сообщений: 96
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var elements = document.querySelectorAll('.a') || [];
elements = [].slice.apply(elements); // toArray
elements.forEach(function (element, i) {
    element.addEventListener('click', function () {
        alert(this); // див на который кликнули
        alert(element); // див на который кликнули
        alert(i); // номер дива на который кликнули
    })
});
учитесь рукожопчики мои  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Maxmaxmaxmaximus8, 01.03.2014 в 22:36.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.03.2014, 22:33
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.02.2014 
					
					
					
						Сообщений: 96
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		показал заодно парню как с селекторами работать, как ты заметил. думаешь путаницы больше вносит? 
	
 
	| 
		
			Сообщение от Poznakomlus
			
		
	 | 
 
	| 
		при чем здесь || [];
	 | 
 
	
 
 если вернется null. нельзя делать slice.apply( null )
 
	
 
	| 
		
			Сообщение от Poznakomlus
			
		
	 | 
 
	| 
		и написали ведь есть клсс a
	 | 
 
	
 
 ох лол, опечатался)  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Maxmaxmaxmaximus8, 01.03.2014 в 22:36.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.03.2014, 22:45
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от Maxmaxmaxmaximus8
			 
		
	 | 
 
	| 
		если вернется null.
	 | 
 
	
 
 querySelectorAll null вроде не возвращает, или в каком-то браузере таки пакостит?  
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				01.03.2014, 23:17
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 22.02.2014 
					
					
					
						Сообщений: 96
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Poznakomlus
			
		
	 | 
 
	| 
		в задаче явно описано дивы есть
	 | 
 
	
 
 да достал ты придираться, если он на столько тупой что не догадается подменить селектор под свою задачу, то программирование это явно не его
 
	
 
	| 
		
			Сообщение от Aetae
			
		
	 | 
 
	| 
		или в каком-то браузере таки пакостит?
	 | 
 
	
 
 нет, я просто ошибся, я напутал все с querySelector и коллекциями.
 
var elements = [].slice.call(document.querySelectorAll('.a'));
elements.forEach(function (element, i) {
    element.addEventListener('click', function () {
        alert(this); // див на который кликнули
        alert(element); // див на который кликнули
        alert(i); // номер дива на который кликнули
    })
});
 
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Maxmaxmaxmaximus8, 02.03.2014 в 17:25.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				02.03.2014, 01:40
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Poznakomlus
			
		
	 | 
 
	| 
		в задаче явно описано дивы есть
	 | 
 
	
 
 Херовая практика использовать такие селекторы. Хотя откуда тебе знать-то..
 
	
 
	| 
		
			Сообщение от Poznakomlus
			
		
	 | 
 
	| 
		приведи где код не работает
	 | 
 
	
 
 Привожу:
 
<style>
      div.a {
        padding:5px;
        margin: 5px;
        background-color: red;
        float: left;
      }
    </style>
    <div class="a">1</div>
    <div class="a">2</div>
    <div class="a">3</div>
    <div class="a">4</div>
    <div class="a">5</div>
    <script>
      (function () {
        "use strict";
        var divs = document.querySelectorAll("div.a"),
          len = divs.length,
          i = 0;
        for (; divs[i].setAttribute("onclick", "clval(" + i + ")"), ++i < len;);
        clval = function (e) {
          alert(e);
        };
      }());
    </script>
Ну и вобще речь не про работает/не работает. 
Ты ведь сам знаешь - бывает код работает, но в адрес его автора хочется сказать много нехороших слов.  
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |