2017-09-27 1 views
0

これはなぜ機能しませんか?ボタンをクリックして「ナビ」を表示し、「ナビ」がブロックされている場合、「移動」がテキストに合わせて中央に配置されます。JavaScriptスタイルのdivは他のdivのスタイルに基づいています[ヘルプ]

私は同じボタンで「移動」することができますが、それは私が探しているものではありません。

const btn = document.getElementById('btn'); 
 
const nav = document.getElementById('nav'); 
 
const move = document.getElementById('move'); 
 

 
btn.addEventListener('click',() => { 
 
    if (nav.style.display === "none") { 
 
    nav.style.display = "block"; 
 
    } else { 
 
    nav.style.display = "none"; 
 
    } 
 
}); 
 

 
if (nav.style.display === "block") { 
 
    move.style.textAlign = "center"; 
 
}
#nav { 
 
    background-color: lightblue; 
 
    display: none; 
 
} 
 
    
 
li { 
 
    display: inline; 
 
} 
 
<div id="nav"> 
 
    <li>one</li> 
 
    <li>two</li> 
 
    <li>three</li> 
 
</div> 
 

 

 
<div id="move"> 
 
    <h4>Hello</h4> 
 
</div> 
 
<button id="btn">change</button>

+0

ご質問が本当に明確かどうかはわかりません。私は下の私の答えであなたを助けようとしました。もし私が正しく理解したら教えてください。 – GibboK

+0

nav 'block'を実行した後、最初の' if'ループ自体に 'move.style.textAlign =" center ";'を追加するだけで、条件を再度確認するのではなく(nav display ===ブロックの場合)、同じことが達成される。あなたは何か他のものを探していますか? – nabanita

答えて

0

あなたが中央に整列する#nav内のテキストを強制的にこのような方法で、使用してみてください。あなたはstyleプロパティEXを使用して、DOMノードのインラインスタイルを見て検討することもでき、JavaScriptでいくつかの条件に基づいて動的にインラインスタイルを変更する必要がある場合

#nav { 
    background-color: lightblue; 
    display: none; 
    text-align: center; 
} 

:nav.style.display

シンプルに例:

if (nav.style.display === "none") { 
    nav.style.display = "block"; 
    move.style.textAlign = "center"; 
    } else { 
    nav.style.display = "none"; 
    } 

さらにinfo on style property can be found here

+0

私はCSSでそれを行う方法を知っていますが、私は別のdivのスタイリングに基づいてjavascriptでそれを行う方法を尋ねました... – hannacreed

+0

@hannacreed私は私の答えを編集しました。 – GibboK

0
const btn = document.getElementById('btn'); 
const nav = document.getElementById('nav'); 
const move = document.getElementById('move'); 

const btn = document.getElementById('btn'); 
const nav = document.getElementById('nav'); 
const move = document.getElementById('move'); 

btn.addEventListener('click',() => { 
    if (nav.style.display === "none") { 
    nav.style.display = "block"; 
    move.style.textAlign = "center"; 
    } else { 
    nav.style.display = "none"; 
    } 
}); 
+0

ほとんどの場合、ボタン内のif文がなくても可能だと思いましたが、そうは思いません。 – hannacreed

+0

したがって、if(nav.style.display === "block"){move.style.textAlign = "center"; } '(元のコードの最後の3行)? –

+0

いいえ、私はちょうどそのコードの行をボタンに入れたくないですが、私はそれがボタンの中で働かなければならないと思いますか? – hannacreed

関連する問題