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など)が存在する場合他の名前のチェックボックスがページに存在するコンソールスクリプトの場合、1回限りの解決策が必要です

4

5 に答える 5

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のソリューションを参照してください)

于 2012-07-09T10:43:39.797 に答える
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;
}
于 2012-07-09T10:44:27.810 に答える
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]);
  }
}  
于 2012-07-09T10:48:20.033 に答える
0

ページ上のすべての要素を取得し、正規表現を記述して、一致する文字列で各 ID をテストし、それらを個別の配列に格納します。この配列には、必要な要素が含まれます。

于 2012-07-09T10:42:21.140 に答える
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;
}
于 2012-07-09T10:49:46.020 に答える