Javascript 数学淘汰赛

Javascript 数学淘汰赛,javascript,jquery,knockout.js,knockout-2.0,Javascript,Jquery,Knockout.js,Knockout 2.0,我是个新手,但我的头脑仍然在想,我想知道如何使用两个KO变量来做简单的数学(加法和乘法) 目前我有: self.popInc1 = ko.observable('0.3'); self.popIncrease = ko.computed(function () { return self.popInc1() + " x " + self.population(); }); 当它返回并打印出来时,这非常好:0.3x54556239“ 但是我想把这两个变量相乘。我试过下列方法,但没有成功

我是个新手,但我的头脑仍然在想,我想知道如何使用两个KO变量来做简单的数学(加法和乘法)

目前我有:

self.popInc1 = ko.observable('0.3');
self.popIncrease = ko.computed(function () {
    return self.popInc1() + " x " +  self.population();
});
当它返回并打印出来时,这非常好:0.3x54556239

但是我想把这两个变量相乘。我试过下列方法,但没有成功

self.popInc1 = ko.observable('0.3');
self.popIncrease = ko.computed(function () {
    return Math.floor(self.popInc1() * self.population());
});

现在0.3是静态的,但最终将通过文本输入成为动态的。

类似的东西怎么样


我修正了它,从数组中提取的原始值是字符串而不是数字。facepalm。

如果我将人口定义为一个固定值,那么这是可行的,但是它是动态的,并且是从应用程序的前面定义的。数字是从数组中提取的,使用的数字取决于另一个选项。所以重申一下,如果我把self.population=ko.observable(123),它是有效的,如果我去掉123,我得到的NaNself.population必须是正确的,因为它在视图中打印出了正确的值NaN值是因为_self.userInput和_self.population未初始化。如果值未定义,则可以执行简单检查,然后返回0,否则执行计算。
<div data-bind="text: popIncrease"></div>
<input type="text" data-bind="value: userInput,  valueUpdate: 'afterkeydown'" />


var ViewModel = function(){
    var _self = this;
    _self.userInput = ko.observable(0.3);
    _self.population = ko.observable(54556239);

    _self.popIncrease = ko.computed(function () {
        return Math.floor(_self.userInput() * _self.population());
    });
};
_self.population = ko.observable(0);