如何将div id名称添加到数组中

时间:2014-05-07 17:37:54

标签: javascript html

在页面上我有这些div:

<div id="question-688">
</div>

<div id="test">
</div>

<div id="stats-654">
</div>

<div id="answer-636">
</div>

<div id="someDiv">
</div>

我想创建一个包含这些数字的数组:688,654,636。所以当div的id以questionanswerstats开头时,我想添加number属于此ID到数组。我怎么能通过javascript做到这一点?

5 个答案:

答案 0 :(得分:1)

很简单:

var divs = document.getElementsByTagName('div');
var divIDs = [];
var r = /\d+/;
for (var i =0; i < divs.length; i++) {
    if (divs[i].id.length > 0 && ( divs[i].id.indexOf("question") !=-1 || divs[i].id.indexOf("answer") !=-1 || divs[i].id.indexOf("stats") !=-1 ))
        divIDs.push((divs[i].id).match(r));
}

演示 http://jsfiddle.net/P3LPn/

答案 1 :(得分:1)

如果使用jquery,只有一条指令:

var yourArray=$('div[id^=stats],div[id^=question],div[id^=answer]').toArray().map(function(e){return $(e).attr('id').split('-')[1]}) ; 

查看小提琴http://jsfiddle.net/abdennour/LBc5u/

答案 2 :(得分:1)

这是一个有效的jsBin:http://jsbin.com/pecaj/1/edit

var arrayOfNumbers = [];
var divArray = document.querySelectorAll("div"); 
 for(var index = 0; index<divArray.length; index++) {

  var id = divArray[index].id;
  if(id.match(/\d+$/)) {
    arrayOfNumbers.push(parseInt(id.match(/\d+$/),10))

}

}
console.log(arrayOfNumbers)

它获取div id的数字并将它们添加到数组中。

希望它对你有用:)

答案 3 :(得分:1)

您可以使用方法document.querySelectorAll的普通css选择器。 我使用了Array.prototype.map.call因为前面的方法返回NodeList而不是Array,然后您可以使用map并传递一个函数来提取div的ID。

Demo here

var selector = 'div[id^=stats-],div[id^=answer-],div[id^=question]',
    ids = Array.prototype.map.call(document.querySelectorAll(selector), function (div) {
        return div.id.split('-')[1]|0; // this returns the id as an integer
    });

答案 4 :(得分:0)

也许是这样的?创建一个地图,他们使用地图来引用你的DIV&#39>

var map = {};
// add a item
map[key1] = value1;
// or remove it
delete map[key1];
// or determine whether a key exists
key1 in map;