いただきましX =のdocument.getElementById( "ID")の差。クラス名=&x =のdocument.getElementById( "ID")、x.className =
<div class="w3-dropdown-click">
<button class="w3-btn" onclick="clickDrp()">Hover Over me</button>
<div class="w3-dropdown-content w3-animate-zoom w3-bar-block" id="cont">
<a href="#" class="w3-bar-item w3-button">SomeLink1</a>
<a href="#" class="w3-bar-item w3-button">SomeLink2</a>
<a href="#" class="w3-bar-item w3-button">SomeLink3</a>
<a href="#" class="w3-bar-item w3-button">SomeLink4</a>
</div>
</div>
<script type="text/javascript">
function clickDrp(){
var x = document.getElementById("cont").className;
if(x.search("w3-show") == -1)
x += " w3-show";
else
x = x.replace(" w3-show","");
}
</script>
と以下のコードの差
<div class="w3-dropdown-click">
<button class="w3-btn" onclick="clickDrp()">Hover Over me</button>
<div class="w3-dropdown-content w3-animate-zoom w3-bar-block" id="cont">
<a href="#" class="w3-bar-item w3-button">SomeLink1</a>
<a href="#" class="w3-bar-item w3-button">SomeLink2</a>
<a href="#" class="w3-bar-item w3-button">SomeLink3</a>
<a href="#" class="w3-bar-item w3-button">SomeLink4</a>
</div>
</div>
<script type="text/javascript">
function clickDrp(){
var x = document.getElementById("cont");
if(x.className.search("w3-show") == -1)
x.className += " w3-show";
else
x.className = x.className.replace(" w3-show","");
}
</script>
2番目のドロップダウンメニューで問題なく動作します。 xがグローバル変数にされても、最初はそれはありません。
私はjavascriptを使いましたが、その理由を理解することができません。 誰かがそれを推論できますか?
PS:私は最初の変形ではW3-CSS
xがグローバル変数の場合はどうなりますか? –
@PrajvalMは違いはありません。 – Pointy
@PrajvalM、それは無関係です。文字列値を変数(ローカル、グローバル、またはオブジェクトのプロパティ - それは問題ではありません)に代入するときは、コピーを割り当てます。ストリングはプリミティブな値です(不変)。 'className'プロパティの値を変更する唯一の方法は、新しい文字列を割り当てることです。変数への代入でこれを行うことはできません。これは 'className'プロパティにする必要があります。 – trincot