Javascript 计算敲除中一些输入的总和
我的HTML代码的一部分:Javascript 计算敲除中一些输入的总和,javascript,knockout.js,Javascript,Knockout.js,我的HTML代码的一部分: <!-- ko foreach: teamMembers --> <tr> <!-- ko foreach: days --> <td> <!-- ko foreach: $data --> <input type="text" data-bind="value: number1"> <input ty
<!-- ko foreach: teamMembers -->
<tr>
<!-- ko foreach: days -->
<td>
<!-- ko foreach: $data -->
<input type="text" data-bind="value: number1">
<input type="text" data-bind="value: number2">
<!-- /ko -->
</td>
<!-- /ko -->
<td>Total sum</td>
<td>
<button class="btn" data-bind='click: $root.addShift'>
Add shift
</button>
</td>
</tr>
<!-- /ko -->
总额
加班次
viewmodel代码:
function TimeCardViewModel() {
var self = this;
self.teamMembers=ko.observableArray();
self.addShift = ko.pureComputed(function() { });
}
$.ajax({
type:"POST"
url: "/...json"
}).then(function(data){
for (var i=0; i<data.length; i++) {
timeCardViewModel.teamMembers.push({days:data[i]});
}
},
function(){
console.log('failure');
}
)
函数TimeCardViewModel(){
var self=这个;
self.teamMembers=ko.observearray();
self.addShift=ko.pureComputed(函数(){});
}
$.ajax({
类型:“职位”
url:“/…json”
}).then(函数(数据){
对于(var i=0;i,如果您正在处理这些类型的嵌套数据,您可能需要为每个元素创建viewmodels
如果我正确理解了你的结构,那么:
时间卡,包含
团队成员,其中包含
天,其中包含
移位,包含
两个数字
如果您为这些元素中的每一个定义了特定的对象,您就可以很好地了解计算值背后的逻辑
例如:
- 班次的
totalHours
为number1+number2
- 一天的
totalHours
是每个班次的totalHours
总和
- 等等
使用以下两件事将使您受益:
- 自动重新计算总小时数的步骤
- 对数组中的所有值求和
我建议看一下下面的示例,了解如何构建构成时间卡的元素。您可能不需要这么多的类级别,但这样更容易理解
请注意,我没有输入任何代码来将JSON数据转换为新的viewmodel实例。如果您需要这方面的帮助,请在注释中告诉我
函数移位(hoursA,hoursB){
var self=这个;
this.hoursA=ko.可观测(hoursA);
this.hoursB=ko.可观察(hoursB);
//计算1:当其中一个参数为“number1”时,将“number1”添加到“number2”
//变化
this.totalHours=ko.pureComputed(函数(){
返回self.hoursA()+self.hoursB();
});
};
功能日(初始班次){
var self=这个;
this.shifts=ko.observableArray(初始位移);
//计算2:添加每个班次的“总小时数”
this.totalHours=ko.pureComputed(函数(){
返回self.shift().reduce(函数(结果,移位){
返回结果+shift.totalHours();
}, 0);
});
};
功能团队成员视图模型(初始天数){
var self=这个;
this.days=ko.observearray(初始天数);
//计算3:添加每天的“总小时数”
this.totalHours=ko.pureComputed(函数(){
返回self.days().reduce(函数(结果,天){
返回结果+天.总小时数();
}, 0);
});
};
函数TimeCardViewModel(){
var self=这个;
this.teamMembers=ko.observearray();
//计算4:为每个成员添加“totalHours”
this.totalHours=ko.pureComputed(函数(){
返回self.teamMembers().reduce(函数(结果,成员){
返回结果+成员.totalHours();
}, 0);
});
};
如果要处理这些类型的嵌套数据,可能需要为每个元素创建viewmodels
如果我正确理解了你的结构,那么:
时间卡,包含
团队成员,其中包含
天,其中包含
移位,包含
两个数字
如果您为这些元素中的每一个定义了特定的对象,您就可以很好地了解计算值背后的逻辑
例如:
- 班次的
totalHours
为number1+number2
- 一天的
totalHours
是每个班次的totalHours
总和
- 等等
使用以下两件事将使您受益:
- 自动重新计算总小时数的步骤
- 对数组中的所有值求和
我建议看一下下面的示例,了解如何构建构成时间卡的元素。您可能不需要这么多的类级别,但这样更容易理解
请注意,我没有输入任何代码来将JSON数据转换为新的viewmodel实例。如果您需要这方面的帮助,请在注释中告诉我
函数移位(hoursA,hoursB){
var self=这个;
this.hoursA=ko.可观测(hoursA);
this.hoursB=ko.可观察(hoursB);
//计算1:当其中一个参数为“number1”时,将“number1”添加到“number2”
//变化
this.totalHours=ko.pureComputed(函数(){
返回self.hoursA()+self.hoursB();
});
};
功能日(初始班次){
var self=这个;
this.shifts=ko.observableArray(初始位移);
//计算2:添加每个班次的“总小时数”
this.totalHours=ko.pureComputed(函数(){
返回self.shift().reduce(函数(结果,移位){
返回结果+shift.totalHours();
}, 0);
});
};
功能团队成员视图模型(初始天数){
var self=这个;
this.days=ko.observearray(初始天数);
//计算3:添加每天的“总小时数”
this.totalHours=ko.pureComputed(函数(){
返回self.days().reduce(函数(结果,天){
返回结果+天.总小时数();
}, 0);
});
};
函数TimeCardViewModel(){
var self=这个;
this.teamMembers=ko.observearray();
//计算4:为每个成员添加“totalHours”
this.totalHours=ko.pureComputed(函数(){
返回self.teamMembers().reduce(函数(结果,成员){
返回结果+成员.totalHours();
}, 0);
});
}
我看到你已经在一些javascript中使用了一个for
循环?你是否尝试过使用其中的一个来累加数字?你能展示一下你已经尝试过的一些代码吗?我看到你已经在一些javascript中使用了for
循环?你是否尝试过使用其中的一个来累加数字?可以吗显示一些您已经尝试过的代码?a