Получите список всех входных объектов с помощью JavaScript, не получая доступ к объекту формы

Я должен добраться весь input объекты и управляют onclick параметрический усилитель.

Следующее делает задание для <a> ссылки. Поиск чего-то вроде этого для input теги.

for (var ls = document.links, numLinks = ls.length, i=0; i<numLinks; i++){
  var link = unescape(ls[i].href);
  link = link.replace(/\\'/ig,"#");
  if(ls[i].href.indexOf("javascript:") == -1)
  {
    ls[i].href = "javascript:LoadExtern(\\""+link+"\\",\\"ControlPanelContent\\",true,true);";
  }
}
33
задан freginold 5 October 2017 в 14:20
поделиться

2 ответа

(См. Обновление в конце ответа.)

Вы можете получить NodeList для всех входных данных через getElementsByTagName ( спецификация DOM , MDC , MSDN ), затем просто пропустите его:

var inputs, index;

inputs = document.getElementsByTagName('input');
for (index = 0; index < inputs.length; ++index) {
    // deal with inputs[index] element.
}

Там я ' Мы использовали его в документе , который будет искать по всему документу. Он также существует для отдельных элементов ( спецификация DOM ), что позволяет вам искать только их потомков, а не весь документ, например:

var container, inputs, index;

// Get the container element
container = document.getElementById('container');

// Find its child `input` elements
inputs = container.getElementsByTagName('input');
for (index = 0; index < inputs.length; ++index) {
    // deal with inputs[index] element.
}

... но вы сказали, что не хотите использовать родительская форма , поэтому первый пример более применим к вашему вопросу (второй нужен только для полноты, на тот случай, если кто-то другой, нашедший этот ответ, должен знать).


Обновление : getElementsByTagName - отличный способ сделать это, но что, если вы хотите сделать что-то более сложное, например, просто найти все флажки вместо всех input elements?

Вот где пригодится полезный querySelectorAll : он позволяет нам получить список элементов, которые соответствуют любому селектору CSS, который мы хотим .Итак, для нашего примера флажков:

var checkboxes = document.querySelectorAll("input[type=checkbox]");

Вы также можете использовать его на уровне элемента. Например, если у нас есть элемент div в нашей переменной element ,мы можем найти все диапазоны с классом foo , которые находятся внутри этого div следующим образом:

var fooSpans = element.querySelectorAll("span.foo");

querySelectorAll и его двоюродный брат ] querySelector (который просто находит первый соответствующий элемент, а не дает вам список) поддерживаются всеми современными браузерами, а также IE8.

90
ответ дан 27 November 2019 в 17:36
поделиться
var inputs = document.getElementsByTagName('input');
for (var i = 0; i < inputs.length; ++i) {
  // ...
}
6
ответ дан 27 November 2019 в 17:36
поделиться
Другие вопросы по тегам:

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