在没有jQuery的情况下获取所有这样的元素
<input type="checkbox" name="IB_PROPERTY_415_DEL" id="IB_PROPERTY_415_DEL" value="Y">
<input type="checkbox" name="IB_PROPERTY_417_DEL" id="IB_PROPERTY_417_DEL" value="Y">
其中415改变每次迭代,具有整数值(414,416等) 页面上存在其他带有其他名称的复选框 我需要一次解决方案,用于控制台脚本
答案 0 :(得分:4)
使用循环?
var elements = [];
for (var i=415; i<418; i++)
elements.push(document.getElementById("IB_PROPERTY_"+i+"_DEL"));
(唯一标识符应该足够)
如果您不知道ID,可以试试这个:
var inputs = document.querySelectorAll("input[type=checkbox][value=Y]");
var elements = [];
for (var i=0; i<inputs.length; i++)
if (inputs[i].name == inputs[i].id && /^IB_PROPERTY_\d{3}_DEL$/.test(inputs[i].id))
elements.push(inputs[i]);
(请注意,document.querySelectorAll
不适用于所有浏览器,请参阅@ Matt的解决方案以获得更好的方式)
答案 1 :(得分:3)
不使用jQuery(或至少是Sizzle),需要相当多的工作:
function getMatchingEls() {
// Get all the input elements
var els = document.getElementsByTagName("input");
// This regex matches the varying `name` attributes you have
var regex = /^IB_PROPERTY_\d+_DEL$/
// This is what we store matches in
var matches = [];
for (var i=0;i<els.length;i++) {
var curr = els[i];
// Check it's a checkbox, and it's name matches the expression
if (curr.type === "checkbox" && regex.test(curr.name)) {
matches.push(curr);
}
}
return matches;
}
答案 2 :(得分:0)
获取页面上的所有元素,编写正则表达式以使用这样的匹配字符串测试每个id并将它们存储在单独的数组中。该数组将包含您想要的元素。
答案 3 :(得分:0)
如果所有元素都有根元素,请从中获取所有子元素,然后过滤掉您需要的元素:
var mathched = [];
var elements = document.getElementById('root').childNodes;
for (var i = 0; i < elements.length; i++) {
if (elements[i].id.match("IB_PROPERTY_\\d+_DEL")) {
matched.push(elements[i]);
}
}
答案 4 :(得分:0)
简单方法:
function get_checkboxes() {
var cboxes = new Array();
var inputs = document.getElementsByTagName('input');
var len = inputs.length;
for (var i=0; i<len; i++) {
//if (inputs[i].name && inputs[i].name.indexOf('IB_PROPERTY_')==0) {
if (inputs[i].name && inputs[i].name.match("IB_PROPERTY_\\d+_DEL")) { // this test is better test as alexanderb suggests
cboxes.push(inputs[i]);
}
}
//alert(cboxes.length);
return cboxes;
}