Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.03.2014, 02:07
Аватар для blacklool
Аспирант
Отправить личное сообщение для blacklool Посмотреть профиль Найти все сообщения от blacklool
 
Регистрация: 16.01.2014
Сообщений: 50

узнать номер елемента в массиве при клике
есть 5 дивов, с классом а

есть переменная myVar где -- > .getElementsByClassName('a');

потом addEvent.... и функция в которой нужно:

чтобы при клике на див у меня был alert с номером дива в массиве.

Пример для того чтобы обратиться к одному из дивов мне нужно делать так : myVar[х].

нужно чтобы в "х" заганялся номер дива на которого я кликнул и выводился через alert

Последний раз редактировалось blacklool, 01.03.2014 в 02:25.
Ответить с цитированием
  #2 (permalink)  
Старый 01.03.2014, 02:40
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 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);
});
Ответить с цитированием
  #3 (permalink)  
Старый 01.03.2014, 04:42
Аватар для Vlasenko Fedor
Профессор
Отправить личное сообщение для Vlasenko Fedor Посмотреть профиль Найти все сообщения от Vlasenko Fedor
 
Регистрация: 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.
Ответить с цитированием
  #4 (permalink)  
Старый 01.03.2014, 05:13
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 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>
__________________
В личку только с интересными предложениями
Ответить с цитированием
  #5 (permalink)  
Старый 01.03.2014, 05:22
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

Вообще, имхо, индекс нафиг не нужен, как и массив. Кликнутый див в колбэк и так передаётся через target/this.)
__________________
29375, 35
Ответить с цитированием
  #6 (permalink)  
Старый 01.03.2014, 21:58
Аспирант
Посмотреть профиль Найти все сообщения от Maxmaxmaxmaximus8
 
Регистрация: 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.
Ответить с цитированием
  #7 (permalink)  
Старый 01.03.2014, 22:33
Аспирант
Посмотреть профиль Найти все сообщения от Maxmaxmaxmaximus8
 
Регистрация: 22.02.2014
Сообщений: 96

показал заодно парню как с селекторами работать, как ты заметил. думаешь путаницы больше вносит?

Сообщение от Poznakomlus
при чем здесь || [];
если вернется null. нельзя делать slice.apply( null )


Сообщение от Poznakomlus
и написали ведь есть клсс a
ох лол, опечатался)

Последний раз редактировалось Maxmaxmaxmaximus8, 01.03.2014 в 22:36.
Ответить с цитированием
  #8 (permalink)  
Старый 01.03.2014, 22:45
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,493

Сообщение от Maxmaxmaxmaximus8 Посмотреть сообщение
если вернется null.
querySelectorAll null вроде не возвращает, или в каком-то браузере таки пакостит?
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 01.03.2014, 23:17
Аспирант
Посмотреть профиль Найти все сообщения от Maxmaxmaxmaximus8
 
Регистрация: 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.
Ответить с цитированием
  #10 (permalink)  
Старый 02.03.2014, 01:40
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 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>

Ну и вобще речь не про работает/не работает.
Ты ведь сам знаешь - бывает код работает, но в адрес его автора хочется сказать много нехороших слов.
__________________
В личку только с интересными предложениями
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Как получить innerHTML при клике prope Общие вопросы Javascript 3 10.01.2014 17:13
Изменение размера элемента при клике Derekovich Элементы интерфейса 25 05.12.2013 20:45
Смена фона картинки при клике на иконку Letto Элементы интерфейса 2 08.11.2013 18:31
Изменение фона элемента при клике. psydo Элементы интерфейса 8 28.06.2012 23:53