javascript检查函数参数是否满足条件
我试图编写一个基本的“任务”函数,但遇到了一些问题。 JS HTMLjavascript检查函数参数是否满足条件,javascript,Javascript,我试图编写一个基本的“任务”函数,但遇到了一些问题。 JS HTML quest 点击我! 最终我将使用除点击以外的其他功能,但现在我只想让基本功能正常工作。我对函数相当陌生,但在单击“任务”时什么也没有发生,而我希望显示警报。我的代码显然出了问题。有人能给我指出正确的方向吗?您正在为单击指定一个不可变的编号。键入。最初它的值是0,this.type因此在赋值后保持为0。您应该在quest方法中将单击与此项进行比较 这是一个使用数据属性的版本,您的代码有几个问题 当您使用新对象创建新对象q
quest
点击我!
最终我将使用除点击以外的其他功能,但现在我只想让基本功能正常工作。我对函数相当陌生,但在单击“任务”时什么也没有发生,而我希望显示
警报。我的代码显然出了问题。有人能给我指出正确的方向吗?您正在为单击指定一个不可变的编号。键入。最初它的值是0,this.type
因此在赋值后保持为0。您应该在quest
方法中将单击
与此项进行比较
这是一个使用数据属性的版本,您的代码有几个问题
- 当您使用
新对象创建新对象quest1
时,您将单击
传递到其中。当您通过单击时,它等于0
。在对象方法quest1.quest()
,检查点击次数(this.type
)是否大于/等于所需点击次数(this.required
)this.type
等于0
。它永远不会变成现实。由于您正在创建多个任务,因此单击应该特定于这些任务(对象)。它不应该是全球性的
- 另一个是这样的:
$('#questststuff').html(任务[Math.floor(Math.random()*2)].quest())代码>
我相信你是想解决你的任务阵列<代码>任务[Math.floor(Math.random()*2)].quest()
根本不起作用。即使您将代码更改为任务[0].quest()
或quest1.quest()
它仍然无法工作。如上所述,由于有多个任务,首先需要检查哪个任务处于活动状态
你应该检查你的代码。这里有一些东西可以让你开始。当然,它需要进一步的改进和造型
谢谢我在胡乱摆弄,发现使用点击
是可行的(正如你发布的那样,我正在将其编辑到我的问题中),但最终我想使用不同的东西(比如需要一定的力量或魔力),这就是为什么我尝试使用这个。键入
。是否有一种方法可以强制此。单击时键入进行更新,以便我可以使用不同的变量作为所需的类型?不,这需要另一种设置。您可以尝试使用按钮上的数据属性
。请参阅JSFIDLE的这个分支:
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>
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());
});