2012-10-31 33 views
0

我已經寫訪問多個文本框下面的HTML代碼:如何通過getElementsByName

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

這裏我得到的所有文本框在JavaScript函數的ID與「ID」開始的數組。所以,我可以得到數組中的兩個文本框。

如何獲得所有id爲「id」開頭的文本框?

+0

你使用jQuery? –

+0

你可以簡單地定義名稱和id作爲數組「text_1 []」,所以通過這個你可以訪問..在Java腳本只是定義$('#field_name')。val() –

回答

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); 
} 
} 
3
var nodeList = document.querySelector("input[name^='text_'") 

nodeList應該足夠像你的目的的數組。

請注意,support for querySelector可能不足以滿足您的需求(其中您需要getElementsByTagName,然後在循環中篩選結果)。

或者,你可以使用一個庫,它提供了自己的選擇器引擎。在YUI 3中,您可以:

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

Mootools,Prototype,jQuery和許多其他庫提供了類似的功能。

+0

我改變了我的問題,請給我編輯問題的答案。 –

+0

@rishikeshtadaka - 在查詢中用「id」替換「name」和「text」。 – Quentin

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