[英]document.querySelector reading only 1 class
The document.getElementById
is executing only the first <ul>
when I click, I want all the ul
's working as I click inside them. 当我单击document.getElementById
它仅执行第一个<ul>
,我希望所有ul
都能在单击它们时起作用。
PHP 的PHP
for ($i=0; $i < $Count_Assoc['dev'] ; $i++) {
$History_Assoc = mysqli_fetch_array($HistoryQuery);
echo '<ul class="repoFolder" data-value="'. $History_Assoc['devaddr'] .'">';
echo '<br>';
echo '<h5 style=" color: black;
padding: 0px 9em 0em 0em;">DevAddr:                       Data:</h5>';
echo '<p>'.$History_Assoc['devaddr'].'                 '.$History_Assoc['data'].'</p>';
echo "</ul>";
echo '<br>';
}
Javascript Java脚本
document.querySelector('.repoFolder').onclick = function() {rootFolder()};
function rootFolder() {
alert(document.querySelector('.repoFolder').getAttribute('data-value'));
}
You should set the class on your lists, rather than the Id. 您应该在列表中设置类别,而不是ID。 Id is supposed to be a unique identifier, but class is a way to can create multiple common elements. id应该是唯一的标识符,但是class是可以创建多个公共元素的方法。 Here I have changed your ids into classes 在这里,我将您的ID更改为类
for ($i=0; $i < $Count_Assoc['dev'] ; $i++) {
$History_Assoc = mysqli_fetch_array($HistoryQuery);
echo '<ul class="repoFolder" data-value="'. $History_Assoc['devaddr'] .'">';
echo '<br>';
echo '<h5 style=" color: black;
padding: 0px 9em 0em 0em;">DevAddr:                       Data:</h5>';
echo '<p>'.$History_Assoc['devaddr'].'                 '.$History_Assoc['data'].'</p>';
echo "</ul>";
echo '<br>';
}
And JavaScript: 和JavaScript:
var folders = document.getElementsByClassName("repoFolder");
for (let i = 0; i < folders.length; i++) {
folders[i].onclick = function() {rootFolder.call(this)}; // note that I am passing in the context to rootFolder.
}
function rootFolder() {
alert(this.getAttribute('data-value'));
}
You can use querySelectorAll
to select all element with a class repoFolter
and loop through each element and append the eventListener 您可以使用querySelectorAll
选择具有repoFolter
类的所有元素,并循环遍历每个元素并追加eventListener
var elements = document.querySelectorAll('.repoFolder');
elements.forEach(function(el){
el.addEventListener('click', rootFolder);
})
function rootFolder( ){ ... }
From w3schools.com 从w3schools.com
The querySelector() method returns the first element that matches a specified CSS selector(s) in the document. querySelector()方法返回与文档中指定的CSS选择器匹配的第一个元素。
If you want to get all the elements with specific class or name: 如果要获取具有特定类或名称的所有元素,请执行以下操作:
document.getElementsByClassName("text").onclick = function () {
alert("Called");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.