我可以使用' *'选择器在getElementsByTags()中,但不在getElementsByClassName()或getElementByID()中。
有人可以解释原因吗?并且,无论如何在javascript方法中使用子串选择器,即(getElementsByClassName(" * profile")来选择其类名称包含' profile'?
的元素以下是我的代码:
<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>
答案 0 :(得分:2)
此行为符合DOM-Level-2-Core specification,其中声明:
<强>的getElementsByTagName 强>
返回具有给定标记名称的所有后代元素的NodeList,按照在此元素树的前序遍历中遇到它们的顺序。
参数
DOMString类型的名称 要匹配的标记的名称。特殊值“*”匹配所有标签。
对于*
方法,chracter getElementsByClassName
没有特殊的概念,它被视为字面名称。
<强> UPD 即可。解决你的第二个问题:
无论如何在javascript方法中使用子串选择器,即(getElementsByClassName(“* profile”)来选择其类名称包含“profile”的元素?
您无法使用getElementsByClassName
但是可以使用另一个非常有用的querySelectorAll
方法:
document.querySelectorAll('[class*="profile"]');