javascript检查函数参数是否满足条件

javascript检查函数参数是否满足条件,javascript,Javascript,我试图编写一个基本的“任务”函数,但遇到了一些问题。 JS HTML quest 点击我! 最终我将使用除点击以外的其他功能,但现在我只想让基本功能正常工作。我对函数相当陌生,但在单击“任务”时什么也没有发生,而我希望显示警报。我的代码显然出了问题。有人能给我指出正确的方向吗?您正在为单击指定一个不可变的编号。键入。最初它的值是0,this.type因此在赋值后保持为0。您应该在quest方法中将单击与此项进行比较 这是一个使用数据属性的版本,您的代码有几个问题 当您使用新对象创建新对象q

我试图编写一个基本的“任务”函数,但遇到了一些问题。

JS HTML
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());
});