我想知道如何改变partcular的风格<;李>;在特定情况下<;ul>;通过javascript

我想知道如何改变partcular的风格<;李>;在特定情况下<;ul>;通过javascript,javascript,css,Javascript,Css,我想知道如何通过JavaScript在特定的中更改特定的样式 我的代码是这样的 <ul id="menu"> <li id="number1"><a href="#1">1</a></li> <li id="number2"><a href="#2">2</a></li> </ul> 现在让我们假设我想使用JavaScript更改ul>菜单的li#numbe

我想知道如何通过JavaScript在特定的
中更改特定
  • 的样式

    我的代码是这样的

    <ul id="menu">
      <li id="number1"><a href="#1">1</a></li>
      <li id="number2"><a href="#2">2</a></li>
    </ul>
    

    现在让我们假设我想使用JavaScript更改
    ul>菜单的
    li#number1
    的背景色。

    这是纯JavaScript的解决方案:

    var el = document.querySelector('#number1');
    el.addEventListener('click', function(e) {
        el.style.backgroundColor = 'blue';
    });
    

    下面是一个使用javascript和按钮的解决方案

    <script>
    function doSth(){
        var nodes = document.getElementById("menu").getElementsByTagName("li");
        for(var i=0; i<nodes.length; i++) {
            if (nodes[i].id == 'number2') {
                 nodes[i].style.background = "blue";
             }
        }
    }
    
    </script>
    <ul id="menu">
    <li id="number1"><a href="#1">1</a></li>
    <li id="number2"><a href="#2">2</a></li></ul>
    <input type="button" onClick="doSth();" value="Click here"/>
    
    
    函数doSth(){
    var节点=document.getElementById(“菜单”).getElementsByTagName(“li”);
    
    对于(var i=0;i当您想更改样式时,单击、悬停……?为什么不使用jquery?jquery可以很容易地处理此类问题。我想在单击时更改样式查找快速jquery教程。如果您的问题是关于如何在单击某个内容时执行某项操作,如您上面的评论所示,请添加该问题你自己回答这个问题的信息。另外,如果你想在单击元素本身或单击按钮时更改颜色,请澄清。要有点挑剔,直接在元素上设置样式并不是真正的最佳做法;这可能是使用
    $.css
    等进行jQuery风格编程的后遗症。最好是这样在元素上设置一个类。为了避免闭包,你可以使用
    getElementById
    提供HTML4向后兼容性,你可以使用
    this
    而不是
    el
    来提高单击函数的效率。当然,你可以对这些事情进行挑剔。重构当然是由操作决定的,而我同意直接添加类而不是CSS。我之所以使用它,是因为OP在上面的评论中引用了
    .style
    语法。当您可以使用
    getElementById
    直接跳转到DOM注释时,为什么要迭代DOM注释以查找具有特定ID的类?这是因为提问者想要。请仔细阅读他的问题。他想选择id='number1'的li,而选择id='menu'的ul。这仍然是多余的,不管它位于何处,它应该仍然是唯一的元素,我知道文档中只能有一个id,所以选择id就可以了。但是提问者想要我根据问题回答的方式。为什么建议无效为OP提供客户解决方案,而不是提供不完全符合标准但仍能满足其要求的更好解决方案?您不应该假设OP知道他们要求的是低效解决方案。