У меня есть a div
элемент в документе HTML.
Я хотел бы извлечь все элементы в этом div
с id
атрибуты, запускающиеся с известной строки (например, "q17 _").
Как я могу достигнуть этого использования JavaScript?
В случае необходимости, для простоты, я могу предположить что все элементы в div
имеют тип input
или select
.
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
Вариант 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]);