2016-12-25 6 views
0

Как получить индекс выбранного элемента или 'elems [i]' в javascript? Я знаю, что это очень простой вопрос, поэтому любые предложения о покупке книги или курсе будут очень благодарны. Благодаря!Получение индекса из массива Javascript

код:

<html> 
<body> 
    <table> 
    <tr id="subject"><?php 
    $subjects = array("IT","Programming","Networks"); 
    foreach($subjects as $key => $value) { 
    echo "<td>"."<a href='index.php' class='column'>".$value."</a>"."</td>"; 
    }  
    ?></tr> 
    </table> 
</body> 


<script type="text/javascript"> 

    var elems = document.getElementsByClassName('column'); 
    for (var i = 0; i < elems.length; i++) { 
     elems[i].onclick = function() { 
      console.log(this.innerHTML); 
     }; 
    } 

</script> 
+1

Что такое «выбранный элемент»? Что ты пытаешься сделать? – Dekel

+0

Вы ищете это? https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf –

+0

Пожалуйста, определите «выбранный элемент_». Вы имеете в виду элемент, который сейчас находится в руках в цикле? Или, возможно, элемент, который был нажат? Кроме того, 'getElementsByClassName' не возвращает массив, он возвращает HTMLCollection. – Teemu

ответ

1
var elems = document.getElementsByClassName('column'); 
for (var i = 0; i < elems.length; i++) { 
let a=i;//the magic happens 
elems[i].onclick = function() { 
console.log(a); 
}; 
} 

См Затворы, пусть, ES6.

Вариант два (для старых браузеров):

 var elems = document.getElementsByClassName('column'); 
for (var i = 0; i < elems.length; i++) { 
(function(){ 
var a=i; 
elems[i].onclick = function() { 
console.log(a); 
}; 
})(); 
} 

Вы должны поместить указатель в область обработчиков, либо корыто с помощью блок-область видимости (пусть, первый ответ) или путем создания новой области корыта в IIFE ... (Вы должны создать собственную область для каждого обработчика)

решение 3: объекты установить дом ID:

elems[i].id=i; 
elems[i].onclick=function(){ 
    alert(this.id); 
}; 

Решение 4: Получить динамический индекс:

alert(elems.indexOf(this)); 
+0

Он печатает только количество элементов внутри массива. Я хочу, чтобы он отображал выбранный индекс. – Solomon

+0

@ Соломон: нет. Его волшебство ... –

+0

Решение 3 показалось мне полезным. Спасибо за всю вашу помощь!! – Solomon

Смежные вопросы