这是我的代码的一部分:
想法是改变例如您可以在函数fu()中看到带有类“ navicon”的两个字段的backgroundcolor,但是它不起作用,也不能以此方式工作。更改ID的颜色没有问题,但是我不想为任何按钮指定特定的ID。我的错误和误解在哪里?谢谢!

<!DOCTYPE html>
<html>
    <head>
          <meta charset="UTF-8">
<!        <link rel="stylesheet" href="css/navside.css" type="text/css">
          <style>
.navside {
    list-style-type: none;
        margin: 0;
        padding: 0;
    overflow: hidden;
    background-color: #333;
    }

.navside a {
    float: center;
    display: block;
    color: #f2f2f2;
    text-align: center;
    padding: 14px 16px;
    text-decoration: none;
    font-size: 17px;
    }

.navside a:hover {
    background-color: #ddd;
    color: black;
    }

</style>
</head>
<body>

<script>
function fun(){
    document.getElementById("demo").style.backgroundColor="red";

    function fu(){
        var all = document.getElementsByClassName('navicon');
        for(var i=0;i<all.length;i++){
            all[i].style.backgroundColor='red';
        }
    }
}
</script>

<div class="navside">
    <a class="navicon" id="demo" href="#bla" onclick="fun()" >Text1</a><br>
    <a class="navicon"  href="#blubb" onclick="fu()">Text2</a>
</div>
</body>
</html>

最佳答案

问题是您将fu()的定义放在fun()内,因此不能从全局范围调用它。似乎没有必要将其用作局部函数,我想这只是一个错误。全局定义它们。

function fun(){
    document.getElementById("demo").style.backgroundColor="red";
}

function fu(){
    var all = document.getElementsByClassName('navicon');
    for(var i=0;i<all.length;i++){
        all[i].style.backgroundColor='red';
    }
}


您应该从Javascript控制台中的错误消息(该函数fu不存在)中获得有关此问题的线索。

10-02 20:30