ボタンがクリックされたときにボタンの色を変更したいのですが(マウスの暗い影とマウスの元の色)、2回目のクリックでのみ機能します。何故ですか?そして私はこれをどのように修正できますか?私はまた、マウスダウンとのmouseupを処理する関数を作成しようとしましたJavaScript mousedownは2回目のクリックでのみ動作します
document.getElementById('main').addEventListener('click', function(e) {
var buttonNum = e.target.id.substring(6);
if (e.target.id.substring(0,6) === "button") {
e.target.addEventListener('mousedown', function() {mouseDown(buttonNum)}, false);
e.target.addEventListener('mouseup', function() {mouseUp(buttonNum)}, false);
// trying another way:
// mouseEventHandler(buttonNum);
result.innerHTML = e.target.innerHTML + " was clicked";
}
}, false);
var mouseupColors = ["#CE3737",
"#48935C",
"#FFD454",
"#26567C",
"#FF6528",
"#92898A",
"#AF9FA5",
"#9EA9AA",
"#989788",
"#7C7372"]
var mousedownColors = ["#B52D2D",
"#397A4A",
"#E5BF4B",
"#183F63",
"#E55B24",
"#777071",
"#96888D",
"#879091",
"#7F7E71",
"#635C5B"]
function mouseDown(buttonNum) {
var buttonId = "button" + buttonNum;
document.getElementById(buttonId).style.backgroundColor = mousedownColors[buttonNum - 1];
}
function mouseUp(buttonNum) {
var buttonId = "button" + buttonNum;
document.getElementById(buttonId).style.backgroundColor = mouseupColors[buttonNum - 1];
}
ボタンのIDは(...ボタン1、ボタン2)1〜10です。それは同じ結果を持っています。ここで
var mouseEventHandler = function(buttonNum) {
var buttonId = "button" + buttonNum;
document.getElementById(buttonId).onmousedown = function() {
this.style.backgroundColor = mousedownColors[buttonNum - 1];
};
document.getElementById(buttonId).onmouseup = function() {
this.style.backgroundColor = mouseupColors[buttonNum - 1];
};
};
はフィドルです:https://jsfiddle.net/Lj8kyr7e/
これを避けるには、アクティブな擬似クラスを使用してボタンのスタイリングを検討しましたか?あなた:mousedownにアクティブ状態が追加されますか? –
私はちょうどそれを試して、それは動作します。どうもありがとう!コードを不必要に複雑にするので、これを行うのが最善でしょうか? – Keels
これは最初のクリックで追加したためですか?それ以降は、イベントを追加するたびにクリックします。 – epascarello