2017-03-22 10 views
-1

で動作していますが、<p>タグの代わりに<button>タグを挿入すると、メニュー全体が機能しませんが、<p>と動作します。トグルボックスはボタンでは動作しませんが、段落

どうすればこの問題を解決できますか?

スニペット:

function toggleMenu() { 
 
    var menuBox = document.getElementById('menu-box'); 
 
    if (menuBox.style.display == "block") { // if is menuBox displayed, hide it 
 
    menuBox.style.display = "none"; 
 
    } else { // if is menuBox hidden, display it 
 
    menuBox.style.display = "block"; 
 
    } 
 
}
<div id="infobox2"> 
 
    <form action="index.html" method="get"> 
 
    <p onclick="toggleMenu()" id="menu"> Skapa konto </p> 
 
    <ul id="menu-box" style="display: block"> 
 
     <li><a href="index.html">Start</a></li> 
 
     <li><a href="animal.html">Animal</a></li> 
 
     <li><a href="pictures.html">Pictures</a></li> 
 
    </ul> 
 
    </form> 
 
</div>

+0

これは、フォームがボタンを使用しているため、JavaScriptのイベントにビットを研究しようとしているとどのようにそれらを「防ぐ」ために – goosmaster

答えて

-1

ボタンタグのデフォルトの動作がフォームを送信することです。これが、ページがリロードされている理由です。ボタンがフォームを送信しないようにするには、type属性を指定する必要があります。

<button type="button">Toggle</button> 

さらに読書:

https://www.w3schools.com/tags/att_button_type.asp

特にこの部分:

ヒント:常に要素のtype属性を指定します。 異なるブラウザでは、 要素に異なるデフォルトの種類が使用されることがあります。

+0

はなぜOPは_ _「常にtype属性を指定する」必要がありますか?この仮定はどこから来ていますか? –

+0

ワールドワイドウェブコンソーシアム –

+0

[W3C仕様](https://www.w3.org/TR/html5/forms.html#attr-button-type)は、タイプのリストとデフォルトのタイプ(送信)についてのみ話します。タイプが明示的に述べられていない場合。 type属性は必須としてどこに定義されていますか? –

-1

ボタンのデフォルトの動作を防止する必要があります。関数にreturn falseを追加するだけです。

function toggleMenu() { 
 
    var menuBox = document.getElementById('menu-box'); 
 
    if (menuBox.style.display == "block") { // if is menuBox displayed, hide it 
 
    menuBox.style.display = "none"; 
 
    } else { // if is menuBox hidden, display it 
 
    menuBox.style.display = "block"; 
 
    } 
 
    return false; 
 
}
<div id="infobox2"> 
 
    <form action="index.html" method="get"> 
 
    <p onclick="toggleMenu()" id="menu"> Skapa konto </p> 
 
    <button onclick="toggleMenu()" id="menu1">Skapa konto1</button> 
 
    <ul id="menu-box" style="display: block"> 
 
     <li><a href="index.html">Start</a></li> 
 
     <li><a href="animal.html">Animal</a></li> 
 
     <li><a href="pictures.html">Pictures</a></li> 
 
    </ul> 
 
    </form> 
 
</div>

+0

これは過剰です。一部のボタンでフォームを送信したくない場合は、タイプを変更できます。 –

+0

これはまったく真実ではありません。これは、HTMLの1つに比べてタスクを実行するためのjavascriptの方法です。彼らは完全に代替です。また、あなたはそれに同意しないので、回答をdownvoteしないでください –

+0

私は同意します。私はそれが間違った方向にOPをリードすると信じて私は答えをdownvoted。落ち着いて。 –

関連する問題