Как получить все элементы внутреннее “отделение”, которое запускается с известного текста

У меня есть a div элемент в документе HTML.

Я хотел бы извлечь все элементы в этом div с id атрибуты, запускающиеся с известной строки (например, "q17 _").

Как я могу достигнуть этого использования JavaScript?

В случае необходимости, для простоты, я могу предположить что все элементы в div имеют тип input или select.

24
задан twernt 16 March 2016 в 16:16
поделиться

2 ответа

var matches = [];
var searchEles = document.getElementById("myDiv").children;
for(var i = 0; i < searchEles.length; i++) {
    if(searchEles[i].tagName == 'SELECT' || searchEles.tagName == 'INPUT') {
        if(searchEles[i].id.indexOf('q1_') == 0) {
            matches.push(searchEles[i]);
        }
    }
}

И снова я настоятельно рекомендую jQuery для таких задач:

$("#myDiv :input").hide(); // :input matches all input elements, including selects
32
ответ дан 28 November 2019 в 23:08
поделиться

Вариант 1: Вероятно, самый быстрый (но не поддерживается некоторыми браузерами , если используется в Document или SVGElement):

var elements = document.getElementById('parentContainer').children;

Вариант 2: Вероятно, самый медленный:

var elements = document.getElementById('parentContainer').getElementsByTagName('*');

Вариант 3: Требуется изменение кода (оберните форму вместо div вокруг нее):

// Since what you're doing looks like it should be in a form...
var elements = document.forms['parentContainer'].elements;

var matches = [];

for (var i = 0; i < elements.length; i++)
    if (elements[i].value.indexOf('q17_') == 0)
        matches.push(elements[i]);
12
ответ дан 28 November 2019 в 23:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: