0

私はhtmlで次のコードを書いています:

<input type="text" id="id_1" name="text_1">
<input type="text" id="id_2" name="text_2">
<input type="text" id="id_3" name="text_3">

ここでは、id が「id」で始まる javascript 関数の配列内のすべての textBoxes を取得する必要があります。そのため、配列内の 2 つの textBoxes を超えることができます。

IDが「id」で始まるすべてのテキストボックスを取得するには?

4

4 に答える 4

3
var nodeList = document.querySelector("input[name^='text_'")

nodeListは、目的に応じて配列に十分似ている必要があります。

のサポートはquerySelector、目的には不十分な場合があることに注意してください(getElementsByTagNameループで結果をフィルタリングする必要があります)。

または、独自のセレクターエンジンを提供するライブラリを使用することもできます。YUI 3では、次のことができます。

var listOfYUIObjects = Y.all("input[name^='text_'");

Mootools、Prototype、jQuery、および他の多くのライブラリが同様の機能を提供します。

于 2012-10-31T11:53:22.517 に答える
0
var ele = document.getElementsByTagName("input");
var matchingEle = [];
var eleName = '';

for (var i = 0; i < ele.length; ++i) {
 el = ele[i];
 eleName = el.getAttribute("name");
 if (eleName && eleName.indexOf("text_") == 0) {
     matchingEle.push(el);
 }
}
于 2012-10-31T11:53:51.717 に答える
0

パターンに基づいて要素のリストをフィルタリングする汎用関数を使用できます。これは、将来同様のことを行いたいが、プロパティの基準が異なる場合に役立ちます。

http://jsfiddle.net/3ZKkh/

function filter(elements, pattern) {
    var i, j, match, e, f = [];

    for (i = 0; i < elements.length; i += 1) {
        e = elements[i];
        match = true;

        for (j in pattern) {
            if (pattern.hasOwnProperty(j)) {
                if (!(j in e && pattern[j](e[j]))) {
                    match = false;
                    break;
                }
            }
        }

        if (match) {
            f.push(e);
        }
    }

    return f;
}

var pattern = {
    'type': function (t) {
        return t.toLowerCase() === 'text';
    },
    'name': function (t) {
        return t.toLowerCase().search('text') === 0;
    }
};

console.log(filter(document.getElementsByTagName("input"), pattern));
于 2012-10-31T12:11:20.563 に答える
0
var list = document.getElementsByTagName('input');  //Array containing all the input controls
var textBoxArray = [];                              //target Array
for (var i = 0; i < list.length; i++) 
{
    var node = list[i];

    if (node.getAttribute('type') == 'text' &&  node.getAttribute("id").substring(0, 1) == "id") 
    {
     /*
          insert matching textboxes into target array
     */
      textBoxArray.push(node);
    }
} 
于 2012-10-31T12:01:31.737 に答える