我有一个Excel工作表计算我试图转换为带有Web输出的Javascript。我对Javascript很新,但是我在尝试实现的工作表中遇到了一些问题。
该表是一个氦气体积计算器,它将采用给定的气球类型,乘以一个数量,然后建议填充给定体积所需的氦气罐的最佳值。
这是电子表格的参考:
https://docs.google.com/spreadsheets/d/11EanU_iEr5QIxggyQNjxObFbHRg_77_TXsLQ-zhmtUY/edit?usp=sharing
这是我的JSFiddle尝试使用简短的Web应用程序:
http://jsfiddle.net/wLnv9xLj/41/
var $ = document.getElementById.bind(document);
$('btn').addEventListener('click', function() {
var
tanks = {
0: {
name: 'HEL550',
volume: 292
},
1: {
name: 'HEL450',
volume: 225
},
2: {
name: 'HEL250',
volume: 125
},
3: {
name: 'HEL160',
volume: 125
},
4: {
name: 'HEL110',
volume: 55
},
5: {
name: 'HEL50',
volume: 27.5
},
6: {
name: 'BT 326502',
volume: 14.9
},
7: {
name: 'BT 306472',
volume: 8.9
}
},
balloonModel = $('balloon_model').value,
qantity = $('qty').value,
finalResult = balloonModel * qantity,
finalResultRounded = finalResult.toFixed(2),
tankCalc = tanks[7].name;
$('result').value = finalResultRounded;
$('tankyouneed').value = tankCalc;
}, false);
基本的音量计算很容易并且有效。但我不能试图使用数组和循环来完成其他工作。
在电子表格中列出了所有气球类型,但我实际上只需要一次选择一个,因此下拉列表。我不需要显示水箱计算,只需要根据电子表格结果选择哪个水箱。右边是3个坦克建议:需要实际油箱,最大可运输性或一次性使用不想再购买的人。
有人可以帮忙吗? 谢谢!
答案 0 :(得分:0)
好。我明白。你需要一个循环来找到最好的,第二个等坦克结果。
我的代码有问题,但我希望你理解我的解决方案:
http://jsfiddle.net/wLnv9xLj/42/
for(var i = 0; i < tanks.length; i++){
var tank = tanks[i];
console.log(tank);
if(tank.volume >= finalResult){
if(
first_tank.name !== '' &&
(first_tank.volume - finalResult) > (tank.volume - finalResult)
){
first_tank = tank;
}else{
first_tank = tank;
}
}
}
for(var i = 0; i < tanks.length; i++){
var tank = tanks[i];
console.log(tank);
if(tank.volume >= finalResult){
if(
first_tank.name !== '' &&
(first_tank.volume - finalResult) > (tank.volume - finalResult)
){
first_tank = tank;
}else{
first_tank = tank;
}
}
}
我循环每一个坦克并检查音量。如果高于或等于我的结果需要它将其作为first_tank。也许名字best_tank更好。在我检查first_tank之前。它是不是空的我检查坦克的需要量和体积。这是(坦克的体积 - 你需要的体积)小于(你需要的第一个 - 体积 - 体积)它把它作为first_tank或更好的best_tank。