我需要获取已选择类的表中每行的id值。我需要能够在javascript中执行此操作;不是jquery。
<tr id="1" class="selected"></tr>
<tr id="2"></tr>
<tr id="3" class="selected"></tr>
<tr id="4"></tr>
这应该返回一个数组:[1,3]
感谢任何帮助。感谢。
答案 0 :(得分:4)
这是一个使用PureJS的解决方案。没有Jquery。
使用了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>
答案 1 :(得分:1)
获取元素,转换为数组,提取ID。简单:
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});
答案 2 :(得分:1)
它应该是这样的
var elements = document.getElementsByClassName("selected");
var idArray=[];
for (var i = 0, len = elements.length; i < len; i++) {
idArray.push(elements[i].attr('id'));
}
答案 3 :(得分:1)
您可以使用querySelectorAll
获取所选元素:
var selected = document.querySelectorAll(".selected");
...即使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
。
Array.prototype.map
,并且可以轻松填充IE8等旧版浏览器。
如果您要做很多事情,将map
的副本抓取到变量是很方便的:
var map = Array.prototype.map;
// ...later...
var ids = map.call(document.querySelectorAll(".selected"), function(element) {
return element.id;
});