在页面上我有这些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以question
或answer
或stats
开头时,我想添加number属于此ID到数组。我怎么能通过javascript做到这一点?
答案 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));
}
答案 1 :(得分:1)
如果使用jquery,只有一条指令:
var yourArray=$('div[id^=stats],div[id^=question],div[id^=answer]').toArray().map(function(e){return $(e).attr('id').split('-')[1]}) ;
答案 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。
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;