У меня есть HTML-страница.Как получить все элементы, имена которых начинаются с некоторой строки?
Я хотел бы извлечь все элементы, имя которых начинается с «q1_».
Как я могу достичь этого в JavaScript?
Спасибо!
У меня есть HTML-страница.Как получить все элементы, имена которых начинаются с некоторой строки?
Я хотел бы извлечь все элементы, имя которых начинается с «q1_».
Как я могу достичь этого в JavaScript?
Спасибо!
быстрый и простой способ заключается в использовании jQuery и сделать это:
var $eles = $(":input[name^='q1_']").css("font-color","yellow");
Это будет захватывать все элементы, имени атрибута начинается с «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 ?? – Varun
Варун, второй код, сжатый в ответе karim79, - это простой javascript, он не использует jQuery. – cleberz
Хороший ответ, за исключением того, что вам нужно '.css (« color »,« yellow »);', поскольку 'font-color' не существует в css. Я делаю эту ошибку очень часто.: P – 2015-02-20 23:43:07
Вы можете попробовать использовать jQuery с Attribute Contains Prefix Selector.
$('[id|=q1_]')
Не протестировали его, хотя.
Селектор '[attr | = value]' предполагается использовать для идентификаторов языков. – Gumbo
Вы можете использовать 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>
Спасибо за пример кода! –
что-нибудь более эффективное? – Varun
@ Varun, что неэффективно об этом? – graphicdivine
HTML DOM querySelectorAll() метод здесь, кажется, склонен.
W3School Ссылка дал here
Синтаксис (как указано в W3School)
document.querySelectorAll(CSS selectors)
Таким образом, ответ.
document.querySelectorAll("[name^=q1_]")
Edit:
Учитывая предложение FLX в добавлении ссылку на MDN here
Ваш андер действителен, но W3School считается плохим источником (устаревший doc везде). Лучше использовать MDN, намного лучше. – FLX
Вы имеете в виду имя тега или значение а 'name' атрибут? – Gumbo
Все ли элементы, относящиеся к одному типу тегов? Являются ли они все DIV или LI, например? – graphicdivine
Да, все элементы имеют тип «вход». –