我试图写一个基本的"任务"功能并遇到了一些问题。 This is what I've done so far
var clicks = 0;
var coins = 10;
var Quests = function(type, required, reward, message) {
this.type = type;
this.required = required;
this.reward = reward;
this.message = message;
this.quest = function() {
if (this.type >= this.required) {
coins += this.reward;
return this.message;
} else {
alert('You don\'t have enough ' + required);
}
};
};
quest1 = new Quests(clicks, 10, 50, 'You completed this quest!');
quest2 = new Quests(clicks, 5, 50, 'You completed this quest!');
theQuests = [quest1, quest2];
$(document).ready(function() {
$('#click').click(function() {
clicks += 1;
$('#queststuff').text(clicks);
});
$('#quest').click(function() {
$('#queststuff').html(Quests[Math.floor(Math.random() * 2)].quest());
});
});
<button id="quest">quest</button>
<button id="click">click me!</button>
<div id="queststuff">
</div>
最终我会使用点击之外的东西,但是现在我想让基本功能正常工作。我对功能很陌生,但在点击“任务”的时刻。没有任何反应,而我想要alert
显示。我的代码中的某处显然出错了。有人能够指出我正确的方向吗?
答案 0 :(得分:1)
您正在为clicks
分配Number
,一个不可变的this.type
。它的值最初为0,因此this.type
在赋值后保持为0。您应该在clicks
方法中将this.required
与quest
进行比较。
这是使用data-attributes
答案 1 :(得分:0)
您的代码有几个问题。
使用quest1
创建新对象new Objects
时,会将clicks
传递给它。当您通过clicks
时,它等于0
。在对象方法quest1.quest()
中,您可以检查点击次数(this.type
)是否大于/等于所需的点击次数(this.required
)。 this.type
等于0
。它永远不会真实。由于您要创建多个任务,因此点击应特定于这些任务(对象)。它不应该是全球性的。
另一个是这一行:
$('#queststuff').html(Quests[Math.floor(Math.random() * 2)].quest());
我相信你想要解决你的theQuests
阵列。 Quests[Math.floor(Math.random() * 2)].quest()
根本无法工作。即使您将代码更改为theQuests[0].quest()
或quest1.quest()
,它仍然无法正常工作。如上所述,由于有多个任务,首先需要检查哪个是有效的。
您应该检查您的代码。这是让你入门的东西。当然,它需要进一步改进和造型。 FIDDLE
var Quest = function (requiredClicks, reward, message) {
this.clicks = 0;
this.coins = 0;
this.requiredClicks = requiredClicks;
this.reward = reward;
this.message = message;
this.check = function () {
if (this.clicks >= this.requiredClicks) {
this.coins += this.reward;
return this.message;
} else {
alert('You don\'t have enough clicks: ' + this.clicks + "/" + this.requiredClicks);
}
};
this.click = function() {
this.clicks++;
};
};
var quest1 = new Quest(10, 50, 'You completed this quest!');
$('#click').click(function () {
quest1.click();
$('#queststuff').text(quest1.clicks);
});
$('#quest').click(function () {
$('#queststuff').html(quest1.check());
});