Доступ к элементам по типу в JavaScript - PullRequest
34 голосов
/ 05 мая 2011

Некоторое время назад я проводил некоторые тесты в Javascript, и играл с кодом, чтобы получить текст всех элементов с определенным классом, Теперь я пытался сделать что-то вроде этого, но получить все элементы определенного типа, например, все элементы type = "text" Есть ли способ сделать это в Javascript или я должен использовать jquery?

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

Ответы [ 4 ]

57 голосов
/ 05 мая 2011

В простом старом 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();
51 голосов
/ 05 мая 2011

Если вам повезло и вам нужно заботиться только о последних браузерах, вы можете использовать:

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

«недавний» означает не IE6, а IE7

3 голосов
/ 05 мая 2011
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;
}());
1 голос
/ 05 мая 2011

Механизм выбора шипения (который поддерживает JQuery) идеально подходит для этого:

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

Или

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