2015-08-04 2 views
0

У меня есть некоторые HTML, напоминающего это:Атрибут содержит селектор слова возвращающегося пустой массив

<input name="arr[something completely random][something else I can't rely on][initial]" /> 
<!-- ... --> 
<input name="arr[dadedadeda][blahblahblah][initial]" /> 

И мой JavaScript document.querySelectorAll('[name~="initial"]') возвращает [] (пусто). Зачем? Являются ли многомерные массивы в именах по-разному? Есть что-то, что мне не хватает?

Я просто попытался document.querySelectorAll('[name$="[initial]"]'), то ends with селектор (attr$="endStr"), и это возвращает то, что мне нужно, но мне еще нужно знать, почему attribute contains селектор (attr~="inStr") не в состоянии работать

+0

Я не думаю, что это дубликат, другой вопрос может иметь тот же ответ, что и этот вопрос, но это не тот же вопрос. – Isaac

ответ

1

Для слова содержит фильтр, слово должно быть разделены пробелами, в вашем случае, который не так как вы имеете слово, заключенное в []

вместо этого вы можете использовать селектор содержит как

document.querySelectorAll('[name*="initial"]') 
document.querySelectorAll('[name*="[initial]"]')//to be more specific 
+0

Спасибо, что не понимали, что существует разница между contains и ... ** действительно ** содержит – Isaac

+0

@Isaac: Подумайте об этом как о различии между поиском списка слов и поиском строки для подстроки. ~ = первое, * = последнее. – BoltClock

+1

@BoltClock Я закончил с селектором 'ends with', чтобы исключить возможность' [initial] 'быть одним из первых двух ключей – Isaac