javascript - 单击更改 css 属性

标签 javascript html css

<分区>


这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这个问题的解决方式不太可能帮助 future 的读者。

关闭 7 年前

我正在尝试通过单击更改我网站的 css 属性,更具体地说是目前的导航栏,然后希望稍后扩展。 目前我有这个。

 <li class="dropdown">
            <a href="#" data-toggle="dropdown" class="dropdown-toggle">Page 1 <b class="caret"></b></a>
                <ul class="dropdown-menu" id="dropdown-menu1">
                    <li id="greenBg"><a href="#" onclick="changeNavbarColor()">Makes the navbar green </a></li>
                    <li id="orangeBg"><a href="#" onclick="changeNavbarColor()">Makes the navbar orange </a></li>
                    <li id="blueBg"><a href="#" onclick="changeNavbarColor()">Makes the navbar blue </a></li>
                </ul>
        </li>

function changeNavbarColor(){

    var navbarCol = document.getElementById("container-fluid1");
    var greenBg = document.getElementById("greenBg");
    var orangeBg = document.getElementById("orangeBg");
    var blueBg = document.getElementById("blueBg");
    var dropdown = document.getElementById("dropdown-menu1");


    var blue = #06F;
    var green = #060;
    var orange = #F60;

    if(dropdown.id == "greenBg"){
        greenBg.style.backgroundColor = green;
    }else if(dropdown.id == "blueBg"){
        blueBg.style.backgroundColor = blue;
    }else if(dropdown.id == "orangeBg"){
        orangeBg.style.backgroundColor = orange;
    };


}

希望每次单击其中一个链接时它都会更改为该颜色。到目前为止什么都没发生。可能与访问我有 dropdown.id 的元素有关

谢谢

最佳答案

您没有选择正确的元素,我们可以通过在 onlick 处理程序中注入(inject) this 来解决这个问题。

您需要传入对象单击宽度的上下文 event.target 以便我们可以获取父元素然后检查它的 id,因为单击的对象将是一个 anchor 元素 so so 得到我们做的id event.target.parentNode.id

HTML:

<li id="greenBg"><a href="#" onclick="changeNavbarColor(this)">Makes the navbar green </a></li>

我们需要传入 this 作为上下文,这样我们才能获取目标

JS:

if(event.target.parentNode.id == "greenBg"){
      greenBg.style.backgroundColor = green;
  }

这里我们最后检查被点击元素的正确id并改变背景。

您还必须将颜色设置为像这样的字符串 var blue = "#06F"; 否则您会在查找变量时出错。

您可以查看工作示例 here

关于javascript - 单击更改 css 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32778966/

上一篇:css - 在屏幕上居中 div,在 IE11 上不起作用,但在 Firefox 上可以

下一篇:html - 一个 100vh 高度的 div,包含 3 个 div,其中第二个应该是唯一一个具有可变高度的

相关文章:

html - 如何使用 CSS 在顶部和底部制作一个打开的盒子作为容器?

javascript - 使用 ngSanitize 允许某些样式属性

html - 在 html 中对选项卡进行编码

jquery - Slick Carousel : Adapt . slick-track to scaled image height in center 模式

javascript - 更改 React-Bootstrap Form.Control 元素的颜色

javascript - NPM在nodejs中获取中止错误

javascript - 如何从 SXSSFWorkbook 创建 PIVOT 表 - APACHE POI

javascript - 使用 Jasmine 测试 Angular2/TypeScript 管道

javascript - React useEffect 附加脚本未触发

javascript - 将一个隐藏的 div 复制到另一个 div