2016-09-30 13 views
0

私は学校用の小さなウェブサイトで作業していましたが、私は 'login' divを薄い空気からポップアップさせるボタンを追加したい私はすでにHTML/CSSを書いていますが、Javascriptであまり経験がないので、ここで答えが得られることを期待しています。私はdivを開くopen()関数を書いています。それが再びアクティブになると、それは終了するはずです。jQueryを使わずにhrefをクリックした後にJavascript関数でdivが表示されない

var open = false; 
 

 

 
function open() { 
 
\t open == false ? document.getElementById('login').style.display = 'block' : document.getElementById('login').style.display = 'none'; 
 
\t open = !open; 
 
\t console.log(open); 
 
}
* { 
 
\t margin: 0; 
 
\t padding: 0; 
 
\t min-width: 1px; 
 
\t min-height: 1px; 
 
\t } 
 

 
html,body { 
 
\t width: 100%; 
 
\t height: 115%; 
 
\t overflow-x: hidden; 
 
\t background-image: url('../img/bg.jpg'); 
 
\t } 
 

 

 

 
header { 
 
\t margin-top: 2%; 
 
\t background-color: #FF0000; 
 
\t margin-left: 12.1%; 
 
\t width: 75%; 
 
\t height: 180px; 
 
} 
 

 
header p { 
 
\t font-size: 64px; 
 
\t margin-left: 40%; 
 
\t padding-top: 4.5%; 
 
} 
 

 
#nav { 
 
\t margin-left: 12.1%; 
 
\t width: 75%; 
 
\t height: 50px; 
 
\t background-color: #FF0000; 
 
\t border-bottom: 1px solid #FFFFFF; 
 
} 
 

 
#nav ul li a { 
 
\t display: inline-block; 
 
\t text-align: center; 
 
\t padding: 11px 14px; 
 
\t text-decoration: none; 
 
\t font-size: 24px; 
 
\t } 
 
\t 
 
#content { 
 
\t margin-left: 12.1%; 
 
\t width: 75%; 
 
\t height: 73.9%; 
 
\t background-color: #FF0000; 
 
} 
 

 
footer { 
 
\t text-align: center; 
 
\t background-color: #FF9900; 
 
\t width: 75%; 
 
\t margin-left: 12.1%; 
 
} 
 

 
#nav #right { 
 
\t float: right; 
 
} 
 

 
#nav ul { 
 
\t list-style-type: none; 
 
\t margin: 0; 
 
\t padding: 0; 
 
\t width: 100%; 
 
\t border-top: 1px solid #FFFFFF; 
 
\t 
 
} 
 

 
#nav ul li { 
 
\t float: left; 
 
} 
 

 
#nav ul a:hover { 
 
\t transition: 0.5s; 
 
\t background-color: #FFFF0F; 
 
} 
 

 
#login { 
 
\t display: none; 
 
\t float: right; 
 
\t margin-top: 2%; 
 
\t margin-right: 5%; 
 
\t width: 25%; 
 
\t height: 20%; 
 
\t background-color: #FFFFFF; 
 
} 
 

 
#login form { 
 
\t margin-left: 15%; 
 
\t margin-top: 8%; 
 
}
<!DOCTYPE html> 
 
<html> 
 
\t <head> 
 
\t \t <title>Website</title> 
 
\t \t <link rel="stylesheet" type="text/css" href="css/style.css"/> 
 
\t \t <script src="js/LoginMenu.js"></script> 
 
\t </head> 
 
\t <body> 
 
\t <header><p> Lost Story </p></header> 
 
\t <div id="nav"> 
 
\t \t <ul> 
 
\t \t \t <li><a href="#">Home</a></li> 
 
\t \t \t <li><a href="#">Register</a></li> 
 
\t \t \t <li><a href="#">Downloads</a></li> 
 
\t \t \t <li><a href="#">Forums</a></li> 
 
\t \t \t <li><a href="#">Donate</a></li> 
 
\t \t \t <li><a href="#">Vote</a></li> 
 
\t \t \t \t <div id="right"> 
 
\t \t \t \t \t <li><a href="#" onclick="open()">Log in/register</a></li> 
 
\t \t \t \t </div> 
 
\t \t </ul> 
 
\t </div> 
 
\t <div id="content"> 
 
\t \t <div id="login"> 
 
\t \t \t <form> 
 
\t \t \t \t <p> username: </p> 
 
\t \t \t \t <input type="text" name="firstname"> 
 
\t \t \t \t <p> password </p> 
 
\t \t \t \t <input type="password" name="pass"> 
 
\t \t \t </form> 
 
\t \t </div> 
 
\t 
 
\t 
 
\t </div> 
 
\t <footer> Website made by a rock </footer> 
 
\t </body> 
 
</html>

私はまだ答えを探しています、最後の時間は、誰も私は、この時間は、それがうまくいただければ幸いジャバスクリプトについての私の質問に答えることを試みません。

ありがとうございます!

+0

「オープン」を取得している時点では、関数です。実際には、変数と関数の両方の名前を変更する必要があります。これは、ネイティブのグローバルな 'open'メソッドをシャドーイングしているからです。 – Teemu

+0

これは 'open == false? document.getElementById( 'login')。style.display = 'ブロック':document.getElementById( 'login')。style.display = 'なし'; '悪いです! if/elseとして使用しないでください。あなたがそれを使うつもりなら、それを正しい方法で行います。 'document.getElementById( 'login')。style.display = open == false? 'block': 'none'; ' – epascarello

+0

@ Teemuこれをしても同じ結果になります。 –

答えて

0

問題は、open()がグローバルスコープのwindow.open()を指していることです。

だから、また、あなたのHTMLが有効でないloginOpen()

にあなたの関数の名前を変更します。 ULは子供としてLIOLしか持てません。あなたはDIVです。 https://developer.mozilla.org/en-US/docs/Web/HTML/Element/ul

+0

私を助けてくれてありがとう!これは大きく動作し、divも右側に設定するためにあり、これらのものにインラインCSSを使用することはできません –

0

実際にダイアログで作業するにはjavascriptは必要ありません。 私はあなたのためJSFiddleをした:https://jsfiddle.net/69fjnnx9/

あなたは:target CSSの擬似クラスを使用すると、div要素、すなわち#loginにメニューにあなたのリンクを設定するとともに、ログインのdivのdisplayプロパティに遊ぶことができることがわかりますあなたは目標にしたい。

次に、ログインディビジョンに「#」を指す「閉じる」ボタンを追加し、クリックしたときにターゲットを紛失してログインディビジョンが消えるようにしました。

希望すると便利です。

0
<a href="#" onclick="open()">Log in/register</a> 

コール

window.open() 

代わりにあなたが作成した予想open()関数の。 https://developer.mozilla.org/en-US/docs/Web/API/Window/openを参照して、グローバルWindowオブジェクトで既に使用されているプロパティ名を避けてください。

関連する問題