2017-05-01 44 views
0

HTML改变颜色的javascript

<nav> 
    <ul> 
     <li><a class="notDrop" href="#home">HOME</a></li> 
     <li><a class="notDrop" href="guides.html">GUIDES</a></li> 
     <li class="dropdown"> 
      <a class="dropbtn">BRANDS</a> 
        <div class="dropdown-content"> 
        <a href="gaming.html">NVIDIA</a> 
        <a href="#">INTEL</a> 
        <a href="#">CORSAIR</a> 
        <a href="#">SAMSUNG</a> 
      <li class="dropdown"> 
       <a class="dropbtn">BUILDS</a> 
        <div class="dropdown-content"> 
        <a href="gaming.html">GAMING</a> 
        <a href="#">OFFICE</a> 
        <a href="#">SERVER</a> 
        <a href="#">MEDIACENTER</a> 
        </div> 
      </li> 
    </ul> 
</nav> 

CSS

nav { 
    background-color: white; 
    overflow: hidden; 
    display: flex; 
    justify-content: center; 
} 

的Javascript

window.onload = function mobile(){ 
    if(isMobile.any()) { 
     document.getElementById('nav').style.backgroundColor = "blue"; 
     alert('Mobile'); 
    } 
} 

但我不能改变颜色,我做错了什么?我管理 改变身体的颜色,但我不能导航。

+0

可以共享HTML的'nav'条 – brk

+0

提供的导航元素的ID,改变getElement呼叫使用该ID。 Nav是元素类型 - 不是它的ID。 – Archer

+1

@Leyer'alert('Mobile');'?它工作正常吗? –

回答

1

您使用了错误的javascript函数。 nav是一个标签,而不是一个id。

应当getElementsByTagName("nav")[0]代替getElementById("nav")

的JavaScript将始终返回无论使用getElementsByTagName()方法匹配元件的数目的阵列。因此请使用[0]返回第一个。

+0

它是页面上的第一个导航元素吗? – Archer

+0

你确定吗?他还没有添加任何应用程序HTML – Ninjaneer

+0

@Mendax现在他发布了他的html代码。仍然我坚持这个答案将工作 –

0

您使用了document.getElementById,但您只有HTML5的导航标记。将id =“nav”添加到您的导航标记。

此致敬礼!

0

你这里的问题是,你正在使用getElementById,但没有给你的资产净值的ID。

解决这将是一个ID添加到您的导航,如下的最佳方式:

<nav id="top-nav"> 

而且你的JS就变成了:

document.getElementById('top-nav').style.backgroundColor = "blue"; 

通过超级酷帅给出的答案凝胶男孩,虽然它会工作是不切实际的,因为它寻找任何<nav>标签,所以如果你添加更多<nav>标签,或移动它们,你将不得不重新编码你的JavaScript。

通过使用ID时,JavaScript将始终瞄准正确<nav>