2012-07-09 58 views
0

得到这样所有的元素,而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

他们有一些根元素? – 2012-07-09 10:41:33

+0

不,他们在没有类或ID的表格单元格 – 2012-07-09 10:47:09

回答

3

使用循环?

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的解决方案以获得更好的方式)

+0

如果ids被正确识别,这将是一个好方法。 – sgowd 2012-07-09 10:44:15

+0

不是吗?你不能使用正则表达式作为CSS选择器。 – Bergi 2012-07-09 10:47:43

+0

是的,就是这样!非常感谢! – 2012-07-09 10:57:41

0

获取页面上的所有元素,编写一个正则表达式来测试每个id与这种匹配的字符串,并将它们存储在一个单独的数组中。这个数组将包含你想要的元素。

+0

我明白,但我需要快速解决方案,但没有jQuery这对我来说很难 – 2012-07-09 11:02:44

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; 
} 
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]); 
    } 
} 
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; 
} 
相关问题