2015-01-26 2 views
-1

Мне нужно получить значение id каждой строки в моей таблице, которая имеет выбранный класс. Мне нужно иметь возможность сделать это в javascript; не jquery.Получить идентификатор строки таблицы с определенным классом Javascript

<tr id="1" class="selected"></tr> 
<tr id="2"></tr> 
<tr id="3" class="selected"></tr> 
<tr id="4"></tr> 

Это должно возвращать массив: [1,3]

Любая помощь приветствуется. Благодарю.

+2

Ну, покажите вашу попытку первым! –

+2

Если вы хотите использовать только javascript, зачем с помощью jQuery? –

+0

Посмотрите что-то вроде 'selector' – uoryon

ответ

4

Это решение, использующее PureJS. нет JQuery вообще.

used getElementsByClassName.

var cont = document.getElementById("container"); 
 
var array = cont.getElementsByClassName("selected"); 
 

 
for (var i = 0; i < array.length; i++)alert(array[i].id);
<table id="container"> 
 
<tr id="1" class="selected">asdasd</tr> 
 
<tr id="2">asdasdasd</tr> 
 
<tr id="3" class="selected">asdasdasd</tr> 
 
<tr id="4">asdasdasd</tr> 
 
</table>

+0

Работал как шарм. Благодарю. – sarovarc

+0

Добро пожаловать :) –

1

Получить элементы, преобразовать в массив, извлечь идентификаторы. Простой:

var elements = document.getElementsByClassName("selected"); 
var elements_array = [].slice.call(elements); 
var ids = elements_array .map(function(element){ return element.id }); 

Еще проще в JQuery, хотя:

var ids = $(".selected").map(function(index, element){return element.id}); 
+0

«Еще проще» Потому что это одна линия? – epascarello

+0

Одна строка, без преобразования массива. Я признаю, что это просто мое мнение. –

+1

Только 1000 строк JQuery упрощают работу. LOL, я могу скрыть код в функции, и это будет выглядеть еще проще. :) – epascarello

1

Это должно быть что-то вроде этого

var elements = document.getElementsByClassName("selected"); 
var idArray=[]; 
for (var i = 0, len = elements.length; i < len; i++) { 
    idArray.push(elements[i].attr('id')); 
} 
1

Вы можете получить выбранные элементы с помощью querySelectorAll:

var selected = document.querySelectorAll(".selected"); 

... тогда y НУ можете получить их id сек, применяя Array#map, даже если selected является NodeList, а не массив:

var ids = Array.prototype.map.call(selected, function(element) { 
    return element.id; 
}); 

Все в одном:

var ids = Array.prototype.map.call(document.querySelectorAll(".selected"), function(element) { 
    return element.id; 
}); 

querySelectorAll поддерживается всеми современными браузерами, и также IE8.

Array.prototype.map существует во всех современных браузерах и может быть легко заполнен на старых, таких как IE8.


Если вы собираетесь делать это много, это удобно, чтобы захватить копию map переменной:

var map = Array.prototype.map; 

// ...later... 

var ids = map.call(document.querySelectorAll(".selected"), function(element) { 
    return element.id; 
}); 
Смежные вопросы