Как получить все элементы, которые имя запускает с некоторой строки?

У меня есть страница HTML. Я хотел бы извлечь все элементы, имя которых запускается с "q1 _".

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

40
задан TylerH 19 July 2018 в 13:46
поделиться

3 ответа

Быстрый и простой способ - использовать jQuery и сделать следующее:

var $eles = $(":input[name^='q1_']").css("color","yellow");

Это захватит все элементы, чей атрибут name начинается с 'q1_'. Чтобы преобразовать полученную коллекцию объектов jQuery в коллекцию DOM, сделайте следующее:

var DOMeles = $eles.get();

см. http://api.jquery.com/attribute-starts-with-selector/

В чистом DOM вы можете используйте getElementsByTagName , чтобы захватить все входные элементы и просмотреть полученный массив в цикле. Элементы с name , начинающиеся с 'q1_', помещаются в другой массив:

var eles = [];
var inputs = document.getElementsByTagName("input");
for(var i = 0; i < inputs.length; i++) {
    if(inputs[i].name.indexOf('q1_') == 0) {
        eles.push(inputs[i]);
    }
}
50
ответ дан 27 November 2019 в 01:29
поделиться

Вы можете попробовать использовать jQuery с Attribute Contains Prefix Selector.

$('[id|=q1_]')

Хотя я не тестировал это.

0
ответ дан 27 November 2019 в 01:29
поделиться

Вы можете использовать getElementsByName ("input"), чтобы получить коллекцию всех входных данных на странице. Затем прокрутите коллекцию, проверяя имя по пути. Примерно так:

<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>

</head>
<body>

  <input name="q1_a" type="text" value="1A"/>
  <input name="q1_b" type="text" value="1B"/>
  <input name="q1_c" type="text" value="1C"/>
  <input name="q2_d" type="text" value="2D"/>

  <script type="text/javascript">
  var inputs = document.getElementsByTagName("input");
  for (x = 0 ; x < inputs.length ; x++){
    myname = inputs[x].getAttribute("name");
    if(myname.indexOf("q1_")==0){
      alert(myname);
      // do more stuff here
       }
    }
    </script>
</body>
</html>

Demo

20
ответ дан 27 November 2019 в 01:29
поделиться
Другие вопросы по тегам:

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