私はもうすぐそこにいますが、コードの設定については少しわかりません。基本的に、クリック時にクラスを削除し、onclickに再度追加し、次にonclickを削除してから、onclickを追加します。等々!これが私が持っているものです、それはほぼそこにあります、しかしこれをするより良い方法があれば助けてください!ありがとうございました。
document.getElementById('myButton').onclick = function() {
myButton.className = myButton.className.replace(/(?:^|\s)active(?!\S)/g, '') ? 'active': jbar.className.replace(/(?:^|\s)active(?!\S)/g, '') ;
}
どんな助けでも大歓迎です!
三項演算子を使用する場合は、次を使用します。
document.getElementById('myButton').onclick = function() {
var className = ' ' + myButton.className + ' ';
this.className = ~className.indexOf(' active ') ?
className.replace(' active ', ' ') :
this.className + ' active';
}
わかりやすくするために、通常のif/elseを使用します。
document.getElementById('myButton').onclick = function() {
var className = ' ' + myButton.className + ' ';
if ( ~className.indexOf(' active ') ) {
this.className = className.replace(' active ', ' ');
} else {
this.className += ' active';
}
}
これがフィドルです: http://jsfiddle.net/ttEGY/
JQueryがあなたにとって大丈夫なら、それは本当に同じくらい簡単です
$(myButton).toggleClass('active')
トグルクラスメソッドの一般的な実現を提案します。
function toggleClass(element, tClass) {
tClass = tClass.replace(/\s/g, "");
var classes = element.className;
element.className = classes.indexOf(tClass) !== -1
? classes.replace(" " + tClass, "")
: classes + " " + tClass;
}
使用:
var element = document.getElementById('myId');
toggleClass(element, 'active');
配列メソッドを使用した実装:
const toggleClass = (element, className) => {
let classNames = element.className.split(' ');
let index = classNames.indexOf(className);
if (index === -1) {
classNames.Push(className);
} else {
classNames.splice(index, 1);
}
element.className = classNames.filter(item => item !== '').join(' ');
}
使用法:
let body = document.getElementsByTagName('body')[0];
toggleClass(body, 'ready');