如何告诉Javascript getElementByClassName获取ul的所有元素,而不是在每个li中重复类名?
我正在尝试清理我的html/css。我如何才能让这个Javascript仍然工作,而不在ul的每个li元素中插入类名? 如何使html更加美观和可读如何告诉Javascript getElementByClassName获取ul的所有元素,而不是在每个li中重复类名?,javascript,html,css,Javascript,Html,Css,我正在尝试清理我的html/css。我如何才能让这个Javascript仍然工作,而不在ul的每个li元素中插入类名? 如何使html更加美观和可读 const ProfileForm=document.getElementsByClassName('profile_container'); const dash=document.getElementsByClassName('dashboard_按钮'); var指数; var数组=[]; 对于(变量i=0;i
const ProfileForm=document.getElementsByClassName('profile_container');
const dash=document.getElementsByClassName('dashboard_按钮');
var指数;
var数组=[];
对于(变量i=0;i
- 配置文件
我的属性
- 我的优惠
我的实用工具和Ejari
最喜爱的属性
信息
设置
您可以使用来注意某个“祖先”元素中的所有事件。(使用而不是内联事件处理程序可以做到这一点,还可以促进HTML和JavaScript之间的关注点分离。) 因为我不确定你想在循环中做什么,下面的演示只是“取消突出显示”所有列表项(然后突出显示单击的任何一项)。有关详细说明,请参阅代码内注释 这是否向你展示了如何完成你想做的事情
//标识'ul'元素,当用户在其中单击时调用'hightlightItem'
const list=document.getElementsByClassName(“列表”)[0];
list.addEventListener(“单击”,高亮显示项);
//定义侦听器函数
函数highlightItem(event){//侦听器可以访问触发事件
const clickedThing=event.target;//事件的'target'属性很有用
//在继续之前,请确保单击的是'li'元素
如果(单击Thing.tagName.toLowerCase()=“li”){
//收集列表项
const items=list.querySelectorAll(“li”);
//循环浏览集合
对于(让项目中的项目){
//更改循环中当前项的类列表
item.classList.remove(“突出显示”);
//在继续循环中的下一项之前,可能会再次更改它
if(item==event.target){item.classList.add(“highlight”);}
}
}
}
。突出显示{背景色:黄色;}
- 侧面图
- 我的财产
- 我的提议
不要使用文档。getElementByClassName
,而是使用文档。querySelectorAll
一个简单的文档。querySelectorAll(“ul li”)
应该可以工作。但是要小心,因为这将选择整个文档中的所有
。如果要选择特定的
,请为其指定一个类或ID,并仅选择此项:
<ul id="myList"><li>...<li></ul>
document.querySelectorAll("ul#myList li")
- …
文件查询选择器(“ul#myList li”)
您可以通过查询选择器执行此操作
//使用class=“example”获取文档中的所有“li”元素
querySelectorAll(“ulli”)
我相信?这回答了你的问题吗?将classdashboard\u buttons
添加到ul
元素而不是li
元素,然后可以使用document.querySelectorAll('.dashboard\u buttons li')
选择所需的li
元素。在样式表中使用相同的选择器来设置列表项的样式。@JeremyThille,这很有效,请将其作为答案发布,以便我可以分配它。很好,这样做了,谢谢。因为这将选择整个文档编号中的所有,除非有
祖先。是的,嗯,你在你的选择器中得到了我的观点ul#myList
可以是#myList
。
var x = document.querySelectorAll("li.example");