![](/img/trans.png)
[英]Creating Coin Flip using Vanilla Javascript and decrement and this
[英]Decrement class by 1 on click in vanilla Javascript
我目前在 2 個按鈕上有一個遞增和遞減方法。 我的增量 function 很好,但是我的減量方法失敗了。 我只想從變量中減去一個例子,如果我有 class “move2”並觸發遞減方法,我會得到“move1”等等......d
有什么想法嗎?
let i = 0;
const increment = (div) => {
document.getElementById(div).classList.remove("move" + i++);
document.getElementById(div).classList.add("move" + i);
}
const decrement = (div) => {
var hasClass = document.getElementById(div).classList.contains('move1', 'move2')
if(hasClass === true)
document.getElementById(div).classList.remove("move" + i--);
}
正如@MikeMcCaughan 提到的,您需要使用--i
而不是i--
來使用 class 名稱上的遞減值。 此外,僅當 div 具有class1
或class2
的 class 時,您當前的 boolean 變量hasClass
返回true
。 class3
及以上再次返回false
。
您可以使用indexOf()代替使用contains()
來檢查元素 class 名稱,如果它返回 true,則可以使用.classList.replace()
方法將類名更新為遞減值。
const decrement = (div) => {
let className = document.getElementById('x').getAttribute("class"); // get element class value
let hasClass = className.indexOf('move') >= 0; // returns true if class value has "move" in it
if(hasClass === true)
document.getElementById('x').classList.replace((className),("move" + --i)); // replace the class value with the decremented class name
}
jsFiddle使用上述方法: https://jsfiddle.net/AndrewL64/rdjv5hsm/11/
此外,如果您想將減量限制為 0,您可以從以下位置編輯 if 條件:
if(hasClass === true) {
document.getElementById('x').classList.replace((className),("move" + --i));
}
至:
if(hasClass === true && i > 0) {
document.getElementById('x').classList.replace((className),("move" + --i));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.