Я пытаюсь показать только div
s. То, как я решил это сделать, - сначала скрыть все элементы, которые начинаются с «страницы», а затем показывать только правильные div
. Вот мой (упрощенный) код:Получить все элементы, которые начинаются с имени класса
<form>
<input type="text" onfocus="showfields(1);">
<input type="text" onfocus="showfields(2);">
</form>
<div class="page1 row">Some content</div>
<div class="page1 row">Some content</div>
<div class="page2 row">Some content</div>
<div class="page2 row">Some content</div>
<script>
function showfields(page){
//hide all items that have a class starting with page*
var patt1 = /^page/;
var items = document.getElementsByClassName(patt1);
console.log(items);
for(var i = 0; i < items.length; i++){
items[i].style.display = "none";
}
//now show all items that have class 'page'+page
var item = document.getElementsByClassName('page' + page);
item.style.display = '';
}
</script>
Когда я console.log(items);
я получаю пустой массив. Я уверен, что регулярное выражение является правильным (получить все элементы, начиная с «страницы»). Код, который я использую, это старая школа JS, но я не против использования jQuery. Также, если есть решение, которое не использует regexp, это тоже хорошо, поскольку я новичок в использовании regexp's.
Вопрос уже использует цикл. Он спрашивает, как выбрать правильный набор элементов, а не как использовать список узлов, когда он есть. – Quentin
@Quentin yup пришлось обернуть вокруг фрагмента кода. Извините за задержку –