私の問題はかなりシンプルです。私はバニラのJavaScriptだけを使用して2つの要素idを切り替えることを試みています。JavaScriptを使ってHTML要素からIDを渡す
新しいIDに対して正しいCSSを使用するために最初のクリックで機能しますが、その後は新しいIDへのクリックイベントを認識していないようです。ここでこれを説明するための短いコード例は次のとおり
document.addEventListener("DOMContentLoaded", function(){
var blueSpin = document.getElementById("blue-spinner");
var orangeSpin = document.getElementById("orange-spinner");
blueSpin.addEventListener("click", function() {
document.getElementById("h1").innerHTML = "You've Clicked Blue";
blueSpin.setAttribute("id","orange-spinner");
orangeSpin.setAttribute("id", "blue-spinner")
});
orangeSpin.addEventListener("click", function() {
document.getElementById("h1").innerHTML = "You've Clicked Orange";
orangeSpin.setAttribute("id", "blue-spinner");
blueSpin.setAttribute("id", "orange-spinner");
});
});
h1, h2 {
\t font-weight: bold;
\t text-align: center;
\t font-size: 45px;
\t font-family: 'VT323', monospace;
\t margin: 15px;
}
#blue-spinner {
\t color: blue;
}
#orange-spinner {
\t color: goldenrod;
}
<script src="https://use.fontawesome.com/releases/v5.0.2/js/all.js"></script>
<html>
<body>
<h1 id="h1">Click Something:</h1>
<h2 id="blue-spinner"><i class="fa fa-cubes fa-spin" aria-hidden="true"></i></h2>
<h2 id="orange-spinner"><i class="fa fa-cubes fa-spin" aria-hidden="true"></i></h2>
</body>
</html>
私の期待は、いずれかのスピナーをクリックすると、色が切り替わり、ヘッダが変更前クリックされた1識別することです。その後、同じ結果のいずれかのスピナーをクリックすることができます。
ご迷惑をおかけして申し訳ございません。 Happy X-mas Eve Eve!
IDを切り替えると、クリックイベントリスナーは引き続き元の要素を参照します。 – skyline3000