javascript - 样式被添加到一组元素中的最后一个子元素,而不是所选元素的最后一个子元素

标签 javascript css

var NavLinks = document.querySelectorAll('.nav-link');
var circuses = document.querySelectorAll('.circle');


for (var i = 0; i < NavLinks.length; i++) {
    var navLink = NavLinks[i];
    navLink.addEventListener('click', function () {      
        for (var i = 0; i < circuses.length; i++) {
           var circle = circuses[i];
           circle.style.display='none';
        }
        var theLastChild = navLink.lastChild;
        theLastChild.style.display='block';   
      
    }
    );  
  }
.nav-container{   
    height: 10px;
    background: white;
    padding: 30px 0px 40px 0px;  
    margin-left: 18%;
    margin-right: 18%;     
}
.nav-body  ul{
    text-align: right;
}
.nav-body  ul li{
    display: inline- block;
    float: left;
    margin-right: 30px;    
}
#logo{
    margin-right: 0px;
}
.nav-body ul li{
    line-height: 0.6;
}
#logo{    
    margin-top: -10px;
} 
#logo-light-blue{
    color: #5dc5ef;
    font-weight: 900;
}
#logo-dark-blue{
    color: #1885c8;
    font-weight: 900;
}
.circle {
    display: none;
	width: 8px;
	height: 8px;
	background: #5dc5ef;
	/* -moz-border-radius: 50px;
	-webkit-border-radius: 50px; */
    border-radius: 4px;
    margin: auto;
    margin-top: 7px;
}
<header class="nav-container">
        <nav class="nav-body">
            <ul>
                <li class="nav-link"><a  href="#">צור קשר</a>
                <div class="circle"></div></li>
                <li class="nav-link"><a href="#">המלצות ומאמרים</a>
                    <div class="circle"></div></li>
                <li class="nav-link"><a href="#">שאלות נפוצות</a>
                    <div class="circle"></div></li>
                <li class="nav-link"><a href="#">אודות ד"ר שי מרון אלדר</a>
                    <div class="circle"></div></li>
                <li class="nav-link"><a href="#">אודות ההליכים</a>
                    <div class="circle"></div></li>
                <li class="nav-link"><a href="#">ראשי</a>
                    <div class="circle"></div></li>
                <li id="logo"> <h3> <span id="logo-light-blue">  ד"ר </span><span id="logo-dark-blue"> שי מרון  אלדר  </span></h3><br>   
                        <h6> פתרונות כירורגיים להשמנת יתר וניתוחים זעיר פולשניים</h6></li>
            </ul>
        </nav>
    </header>

我需要在我按下的那个类别菜单下做一个蓝色圆圈。但现在蓝色圆圈仅添加到最后一个菜单类别。按下哪个并不重要。 我正在寻找被按下的那个菜单类别的最后一个子项。但它每次都会向我显示所有菜单类别的最后一个子项。 怎么了?

>

最佳答案

您在 HTML 中有错误。 span 标签需要关闭。

            <li id="logo"> 
              <h3> 
                <span id="logo-light-blue">  ד"ר </span>
                <span id="logo-dark-blue"> שי מרון  אלדר  </span>
              </h3>
              <br>   
              <h6> פתרונות כירורגיים להשמנת יתר וניתוחים זעיר פולשניים</h6>
             </li>

并且 Id 属性对于该元素应该是唯一的,您在整个地方都将圆圈作为 Id 重复。

<div id="circle"></div></li>

如果这不能解决问题,请尝试更好地解释问题,因为即使在演示中你已经把结果到处都是。我们是否缺少某些 CSS 或样式库?

编辑:我想我知道你想要什么,是这个吗?看看 fiddle : fiddle here

单击元素后是否需要从其他元素中删除圆圈?

如果您需要圆仅出现在 1 个元素上,则需要将其从其他元素中移除。 这是一个 fiddle ,表明: fiddle with only 1 circle

区别在于:

var NavLinks = document.querySelectorAll('.nav-link');

for (var i = 0; i < NavLinks.length; i++) {
    var navLink = NavLinks[i];
    navLink.addEventListener('click', function (event) {
            var allNavs = document.querySelectorAll('.nav-link div');
        for (var it = 0; it < allNavs.length; it++){
            console.log(allNavs[it]);
          allNavs[it].classList.add('invisible');
          allNavs[it].classList.remove('circleVisible');
         }
        console.log(allNavs);
            var targetElement = event.target || event.srcElement;
        var circleDiv = targetElement.parentNode.querySelectorAll('div');
        console.log(circleDiv[0]);
        circleDiv[0].classList.add('circleVisible');
        circleDiv[0].classList.remove('invisible');
        console.log(circleDiv[0]);
    }
    );  
  }

我已经离开了 console.logs,所以你会看到它是如何工作的,在真正运行代码时删除它们:)

关于javascript - 样式被添加到一组元素中的最后一个子元素,而不是所选元素的最后一个子元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46649552/

相关文章:

html - 具有较高 z 索引的 DIV 在单击包含 Silverlight 对象的具有较低 z 索引的 div 时会隐藏

javascript - Jquery 附加内容 - 不可点击

javascript - jquery提到jquery ui autocomplete

javascript - 第二次单击按钮时删除附加的样式表

php - 使用 materializecss 根据 mysqli 值更改表的行颜色

javascript - 如何仅更改图像(html/css/js)的一部分的亮度?

Javascript 函数不起作用,但它与另一个函数相同

javascript - 将读卡器中的信用卡信息捕获到不可编辑的文本字段中

javascript - 如何在 react 原生应用程序中为 apollo 客户端添加 header

css - 寄存器 0x​​104567911