2

Я могу использовать селектор '*' в getElementsByTags(), но не в getElementsByClassName() или getElementByID().* Селектор работает в getElementsByTagName(), но не для getElementsByClassName() в javascript?

Может кто-нибудь объяснить, почему? ? И, есть в любом случае использовать подстроку селектор в JavaScript методы, т.е. (getElementsByClassName («* профиль»), чтобы выбрать элементы, имя класса включает в себя «профиль»

В приведенной ниже мой код:

<body> 
<div class="yahoo"> 
</div> 
<p class="yahoo"> 
</p> 
<ul class="yahoo"> 
</ul> 

<div class="yahoo"> 
</div> 


<input type='text'> 
    <script type="text/javascript"> 
    function select(){ 
    var elements = document.getElementsByTagName("*") 
    var elements2 = document.getElementsByClassName("*") 
    console.log(elements) 
} 

select() 
</script> 
+4

_ _ - потому что '*' _by definition_ означает «любое возможное имя элемента», а не «любой«Может кто-нибудь объяснить, почему?» возможное имя класса ". – CBroe

ответ

2

Это поведение соответствует DOM-Level-2-Core specification в котором говорится, что:

getElementsByTagName
    Возвраты NodeList всех элементов-потомков с заданным именем тега в том порядке, в котором они встречаются при обходе предзаказов этого дерева элементов.
    Параметры
имя типа DOMString
Имя тега, чтобы соответствовать на. Специальное значение «*» соответствует всем тегам.

Там нет специального понятия для chracter * для getElementsByClassName метода, который трактуется буквально как имя класса.

UPD. Решение второго вопроса:

есть в любом случае использовать подстроку селектор в JavaScript методы т.е. (getElementsByClassName («* профиль»), чтобы выбрать элементы, имя класса включает в себя «профиль»

Вы можете» т использовать getElementsByClassName однако можно использовать еще один очень полезный querySelectorAll метод для этого:

document.querySelectorAll('[class*="profile"]'); 
+0

Вы и я обращались к разным частям того же вопроса (обе из нас, я думаю, стремятся ответить на * другую * часть в редактировании); если вы хотите включить мой ответ в свой (для единственного чистого решения), я был бы признателен; то я могу удалить свой ответ и оставить одно * полное * решение. –

+0

@DavidThomas Спасибо, что указали это, я действительно пропустил вторую часть! Но вам не нужно удалять свой ответ, у него есть полезные ссылки и объяснения. – dfsq