これらの3つの機能を1つにまとめたいと思います。ボタンIDを取得しオブジェクトのプロパティとして使用して繰り返し機能を減らす
私はボタンのIDを取得する必要があります(つまり、それはそれを何のために使うのでしょうか?)これを変数(以前に宣言されたもの)とオブジェクトのプロパティ宣言された)。
const time = {
'name' : 'time',
'counter': 0,
'in' : 0,
'val' : 0
},
idea = {
'name' : 'idea',
'counter': 0,
'in' : 0,
'val' : 0,
'time' : 1
},
story = {
'name' : 'story',
'counter': 0,
'in' : 0,
'val' : 0,
'time' : 4,
'req' : idea,
'idea' : 10
},
grana = {
'name' : 'grana',
'counter': 0,
'in' : 0,
'val' : 0,
'time' : 1,
'req' : story,
'story' : 1
}
// cooldowns
const cooldown = {
idea: 300,
story: 2000,
grana: 2000
};
// adds to counter on click, checks buttons.
const addCounter = button => {
button.counter += 1;
}
//Functions to be combined:
$('#buttonDiv').on('click', '#idea', function(event) {
let element = this;
$('button').addClass('cooldown');
$(element).prop('disabled', true);
setTimeout(function() {
$('button').removeClass('cooldown');
addCounter(idea);
$(element).prop('disabled', false);
checkAll();
}, cooldown.idea);
});
$('#buttonDiv').on('click', '#story', function(event) {
let element = this;
$('button').addClass('cooldown');
$(element).prop('disabled', true);
removeCounter(story);
setTimeout(function() {
$('button').removeClass('cooldown');
addCounter(story);
$(element).prop('disabled', false);
checkAll();
}, cooldown.story);
});
$('#buttonDiv').on('click', '#grana', function(event) {
let element = this;
$('button').addClass('cooldown');
$(element).prop('disabled', true);
removeCounter(grana);
setTimeout(function() {
$('button').removeClass('cooldown');
addCounter(grana);
$(element).prop('disabled', false);
checkAll();
}, cooldown.grana);
});
どうすればいいですか?
3つのボタンに共通のCSSクラスが適用されていますか? –
あなたの 'idea'と' cooldown.idea'変数は何か分かりません。おそらく、質問を編集して説明することができます。私はあなたがそれらを必要としないという気持ちを持っています。 – BobRodes
@BobRodes各アイテムは異なるクールダウン時間を持つため、ある機能ではcooldown.idea、別の機能ではcooldown.storyとなります。私はコードに追加して、それが役立つかどうかを確認します。 – angelod1as