2012-07-09 2 views
0

Désigne tous les éléments comme celui-ci sans jQueryObtenez tous les éléments de masque

<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"> 

Où 415 changer chaque itération, avec des valeurs entières (414, 416, etc.) Autre case à cocher avec d'autres noms existent à la page I besoins solution unique, pour le script de la console

+0

ont-ils un élément racine? –

+0

non, ils dans la cellule de tableau sans classe ou ID –

Répondre

3

Utilisez une boucle?

var elements = []; 
for (var i=415; i<418; i++) 
    elements.push(document.getElementById("IB_PROPERTY_"+i+"_DEL")); 

(L'identifiant unique devrait être suffisant)

Si vous ne connaissez pas les ids, vous pouvez essayer ceci:

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]); 

(Notez que document.querySelectorAll ne fonctionne pas dans tous les navigateurs, voir @ la solution de Matt pour une meilleure façon)

+0

Ce serait une bonne approche si les ID sont connus coup droit. – sgowd

+0

Ne sont-ils pas? Vous ne pouvez pas utiliser une expression rationnelle en tant que sélecteur CSS. – Bergi

+0

Oui, c'est tout! Merci beaucoup! –

0

Récupère tous les éléments de la page, écris une expression régulière pour tester chaque identifiant avec la chaîne correspondante et stocke-les dans un tableau séparé. Ce tableau contiendrait les éléments que vous voulez.

+0

Je comprends cela, mais j'ai besoin de solution rapide, mais sans jQuery c'est difficile pour moi –

3

Sans utiliser jQuery (ou au moins Sizzle), nécessite un peu de travail:

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

Si tout élément a élément racine, obtenir tous Childs de, puis filtrer ceux dont vous avez besoin:

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

façon simple:

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; 
} 
Questions connexes