2011-05-05 121 views
25

前一段時間,我正在對javascript進行一些測試, 並使用代碼來獲取具有某個類的所有元素的文本, 現在我試圖做出類似這樣的事情,但獲得所有元素由某種類型,例如所有元素type =「text」 有沒有什麼辦法可以在JavaScript中做到這一點,或者我應該使用jQuery?在javascript上訪問元素的類型

var xx = document.getElementsByClassName("class"); 
for (i=0;i<xx.length;i++){ 
    var str=xx[i].innerHTML; 
      alert(str); 
} 

Thanks-

+2

您可以嘗試document.getElementsByTagName(tagname)。另一件事是 - iQuery是JavaScript,所以任何可能的jQuery也可能沒有它。 – Jakub 2011-05-05 11:50:13

回答

42

在普通老式的JavaScript,你可以這樣做:

var inputs = document.getElementsByTagName('input'); 

for(var i = 0; i < inputs.length; i++) { 
    if(inputs[i].type.toLowerCase() == 'text') { 
     alert(inputs[i].value); 
    } 
} 

在jQuery中,你會只是做:

// select all inputs of type 'text' on the page 
$("input:text") 

// hide all text inputs which are descendants of div class="foo" 
$("div.foo input:text").hide(); 
+0

我用這個來獲取提交按鈕。 – 2017-01-18 18:27:18

1

滋滋聲選擇器引擎(什麼力量JQuery)完全適合這個:

var elements = $('input[type=text]'); 

或者

var elements = $('input:text'); 
35

如果你是幸運的,只需要關心最新的瀏覽器,你可以使用:

document.querySelectorAll('input[type=text]') 

「近期」 是指不IE6和IE7

+4

此方法現在得到很好的支持:http://caniuse.com/#search=querySelectorAll – thohl 2016-01-20 22:28:25

1
var inputs = document.querySelectorAll("input[type=text]") || 
(function() { 
    var ret=[], elems = document.getElementsByTagName('input'), i=0,l=elems.length; 
    for (;i<l;i++) { 
     if (elems[i].type.toLowerCase() === "text") { 
      ret.push(elems[i]); 
     } 
    } 

    return ret; 
}());