У меня есть страница HTML. Я хотел бы извлечь все элементы, имя которых запускается с "q1 _".
Как я могу достигнуть этого в JavaScript?
Быстрый и простой способ - использовать 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]);
}
}
Вы можете попробовать использовать jQuery с Attribute Contains Prefix Selector.
$('[id|=q1_]')
Хотя я не тестировал это.
Вы можете использовать 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>