2017-07-08 9 views
0

私はjavascriptを今学んでいます。ナビゲーションボタンがクリックされたときに表示される簡単なメニューを構築しています。document.getElementById( 'id')の使い方が分かりませんonclick

私のhtmlにリンクされている区切られたjsファイルの中で、document.getElementById( 'id')。onclickの使い方を理解できません。周りを読んで私は私の問題は、DOM要素がまだ定義されていないため、青からonclickを呼び出すことはできないことを理解していると思う。私はちょうどその時の進め方を理解していない。

ボタンのhtmlタグonclick = "function()"を追加すると機能しますが、別のjsファイルに追加すると機能しません。私はhereというW3schoolチュートリアルを使用しています。

は、ここに私のコードあなたの助けを

<nav> 
     <button class="nav-button" id="nav"> 
     <div class="menu-button"></div> 
     <div class="menu-button"></div> 
     <div class="menu-button"></div> 
     </button> 
     <div class="dropdown-menu" id="dropdown"> 
     <a href="#">Hello</a> 
     <a href="#">Hello</a> 
     <a href="#">Hello</a> 
     </div> 
    </nav> 

.nav-button { 
    background: none; 
    border: none; 
    margin-left: 1em; 
    padding-top: 12px; 
    cursor: pointer; 
} 

.menu-button { 
    background-color: #fff; 
    width: 30px; 
    height: 4px; 
    margin-bottom: 5px; 
    border-radius: 5px; 
} 

.dropdown-menu { 
    margin-top: 7px; 
    width: 100px; 
    background-color: #fff; 
    display: none; 
} 

.showDropDown { 
    display: block; 
} 


function showDropDown() { 
    document.getElementById('dropdown').classList.toggle("showDropDown"); 
} 

document.getElementById("nav").onclick = function showDropDown() 

Here is a codepen

感謝です!

+0

のようなボタンのクリックイベントでクロージャを作ることができます showDropDown

ベターへ

change function showDropDown

間違っています有効な構文でさえ - エラーログ/コンソールを読んで些細な間違いを修正してください。 – user2864740

答えて

4

だけではなく、

document.getElementById("nav").onclick = function showDropDown() 

のonclick関数を受け入れ、you'rはすでに同じで

+0

うわー、初心者の間違い、それは本当にそれをやった!私が尋ねることができる場合、なぜ私は関数を指しているので、= showDropDown()ではないのですか? – oehaut

+1

@oehaut 'showDropDown()'は、 'showDropDown'で指定された関数を実行します。したがって、 '..onclick = showDropDown()'は本当に '..onclick = {関数の呼び出し結果}'です。関数*がコールバックとして使用する関数*を返さない限り、これはあまり役に立ちません。 '..onclick = showDropDown()'の*実用的な観察は、 "showDropDownはロード時に一度呼び出され、ボタンがクリックされたときは決して呼び出されません"のようになります。 – user2864740

+0

@oehaut http://eloquentjavascript.net/ JavaScriptの関数について学ぶには良いリソースです。実用的な実例も数多く含まれています。 – user2864740

-1

これを別のjsファイルに入れると、スクリプトタグを使用してjsファイルをインポートするだけで済みます。 DOMのロード後にjsが実行されることを保証するために、HTMLの最後にこれを行うべきでしょう。

更新あなたの不足している関数呼び出しの周りにブラケット:。

のdocument.getElementById( "NAV")のonclick =関数(){showDropDown(); };

+0

私のヘッダーにこのがあります。

+0

あなたがonclickプロパティに設定したときに、関数呼び出しを囲む括弧がありません。下記参照。 document.getElementById( "nav")。onclick = function(){showDropDown(); }; –

0

1.create myjavascript.jsファイルこの関数を定義しているため

document.getElementById("nav").onclick = showDropDown 

と交換あなたのページhtmlがあるフォルダ。 myjavascript.js内のJavaScriptコード2.copy

「コードのみ<script></script>タグを付けていない」あなたのhtmlページの最後に、この

4.pasteを

<SCRIPT language="javascript" src="myjavascript.js" type="text/javascript"></SCRIPT> 

これはあなたを参照するための方法でありますあなたのhtmlファイルにjavascriptを記述してください。

0

jqueryをプレーンJavaScriptよりもはるかに扱いやすくなります。 は、ここでは、showDropDown関数を呼び出しているどのようにJavaScriptコード掲示がされていないことを

let btn = document.getElementById("nav"); 
let toggleIt = document.getElementById('dropdown'); 
btn.onclick = function(){ 
toggleIt.classList.toggle("showDropDown"); 
}; 
関連する問題