2016-11-07 9 views
1

W3Schoolのexample side navigation barを確認していて、Javascriptの実装方法を理解できませんでした。 jsは、ボタンをクリックしてサイドナビゲーションメニューを開くことを目的としています。以下のコードでは、なぜメニューdivにid mySidenavを追加する必要がありますか?私はdivクラスをsidenavgetElementsByClassNameでターゲティングするのは意味があると思っていたが、何もしなかった。誰かがなぜidが必要なのか説明できますか?私はjsを学ぶので、私はどんな助けにも感謝します。2つの識別子を使用してjavascriptを使用して要素の幅を変更する

これは、メニューのための基本的なhtmlです:

.sidenav { 
    height: 100%; 
    width: 0; 
    position: fixed; 
    z-index: 1; 
    top: 0; 
    left: 0; 
    background-color: #111; 
    overflow-x: hidden; 
    transition: 0.5s; 
    padding-top: 60px; 
} 

そして、JS:

function openNav() { 
    document.getElementById("mySidenav").style.width = "250px"; 
} 

答えて

1

メニューのようなものがあるときは、各ページに1つしか表示されません。IDに固執する必要があります。 IDは1つのオカレンスにのみ一致することが保証されます。同じ方法で動作する必要がある複数の要素がある場合は、クラスごとのマッチングを行う必要があります。 しかし、クラスごとに一致させたい場合は、getElementsByClassName("sidenav")を試したと仮定します。この場合、配列を返すので、一致するものを指定する必要があります。正しい構文は次のようになりますgetElementsByClassName("sidenav")[0]

1

私は変更しようとしました。ここ

<div id="mySidenav" class="sidenav"> 
    <a href="javascript:void(0)" class="closebtn" onclick="closeNav()">&times;</a> 
    <a href="#">About</a> 
    <a href="#">Services</a> 
    <a href="#">Clients</a> 
    <a href="#">Contact</a> 
</div> 

は、メニューのCSSですそれはTryit Editorにあり、行を

に変更しました
document.getElementsByClassName("sidenav")[0].style.width = "250px"; 

となりました。この場合、配列を取得する際にインデックスを使用することを忘れましたか?

関連する問題