html - 从html中的无序列表中选择元素

标签 html css

我有一个垂直元素列表。我想从列表中选择元素。此外,所选元素将变为绿色或任何颜色。一次只能从列表中选择一项。我可以创建列表。但是,不知道如何通过单击鼠标使其具有选择性并在选择后改变颜色。我需要为此使用任何 CSS 吗?

<div class="items">
  <ul>
    <li>Item1</li>
    <li>Item2</li>
    <li>Item3</li>
  <ul>
</div>

最佳答案

给每个 li 元素一个 tabindex,并添加这个 CSS:

li:focus {
  background: lightgreen;
}
<div class="items">
  <ul>
    <li tabindex="1">Item1</li>
    <li tabindex="1">Item2</li>
    <li tabindex="1">Item3</li>
  <ul>
</div>


要在纯 JavaScript 中执行此操作:

  1. 将点击事件监听器添加到 ul 元素。
  2. 如果事件的目标是 li 元素:
    2a.如果已选择一个现有的 li,请删除其类。
    2b.将选定的类添加到事件的目标。

document.querySelector('ul').addEventListener('click', function(e) {   // 1.
  var selected;
  
  if(e.target.tagName === 'LI') {                                      // 2.
    selected= document.querySelector('li.selected');                   // 2a.
    if(selected) selected.className= '';                               // "
    e.target.className= 'selected';                                    // 2b.
  }
});
.selected {
  background: lightgreen;
}
<div class="items">
  <ul>
    <li>Item1</li>
    <li>Item2</li>
    <li>Item3</li>
  <ul>
</div>

请注意 LIe.target.tagName === 'LI' 中必须大写。

关于html - 从html中的无序列表中选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33246967/

相关文章:

javascript - Youtube 弹出窗口在 windows 上不起作用,但在 mac 和 ios 上,绝望

html - Bootstrap 中的全宽定位?

html - 垂直 CSS 菜单,链接内有边框,填满整个宽度

javascript - 单击页面上的某些内容时如何发现调用了哪些 JavaScript 函数?

html - CSS 旋转文本和 div 放置问题

css - 如何摆脱内容上的虚线

javascript - AngularJS 过滤器;将数字格式化为字符串,反之亦然?

html - ruby 转储对象到 html 格式的字符串

javascript - Jquery根据两个div之间的视口(viewport)将位置固定为静态

html - 从 RGBA 背景过渡线性渐变背景