Javascript 如何使用jQuery正确计算输入值?
我不能得到我想要的结果。用户在字段中给出数字后,我使用公式进行计算,并将结果存储在Javascript 如何使用jQuery正确计算输入值?,javascript,jquery,Javascript,Jquery,我不能得到我想要的结果。用户在字段中给出数字后,我使用公式进行计算,并将结果存储在totalValue jQuery(document).ready(function(){ jQuery('#calculateBoiler').click(function() { // Get Rooms Area Value function getRoomsArea () { var roomsArea = jQuery("#roomsa
totalValue
jQuery(document).ready(function(){
jQuery('#calculateBoiler').click(function() {
// Get Rooms Area Value
function getRoomsArea () {
var roomsArea = jQuery("#roomsarea").val()
var roomsAreaNew = parseInt(roomsArea).toFixed(1);
console.log(roomsAreaNew);
return roomsAreaNew;
}
// Get RoomsHeight Value
function getRoomsHeight () {
var roomsHeight = jQuery("#roomsheight").val();
var roomsHeightNew = parseInt(roomsHeight).toFixed(1);
console.log(roomsHeightNew);
return roomsHeightNew;
}
// Get Typos Ktitiou Value
function getBuildingType() {
var buildtypeVal = jQuery('input[name=selectedbuilding]:checked').val();
console.log(buildtypeVal);
return buildtypeVal;
}
// Get Zesto Nero Value
function getHotWater() {
var hotWaterVal = jQuery('input[name=selectedwater]:checked').val();
console.log(hotWaterVal);
return hotWaterVal;
}
// Get Elaxisti Thermokrasia Perioxis
function tempLocation() {
var tempVal = jQuery('input[name=selectedTemp]:checked').val();
console.log(tempVal);
return tempVal;
}
// Get Monwsh Ktiriou Value
function getThermalInsulation() {
var monwsh = (jQuery('#thermalinsulation :selected').val());
console.log(monwsh);
return monwsh;
}
var totalValue = (getRoomsArea () * getRoomsHeight () * 50) * (getThermalInsulation() * getBuildingType() * tempLocation()) + getHotWater();
var result = (Math.round(totalValue / 100)).toFixed(2);
console.log(result);
// Calculations
switch (result) {
case (totalValue == 0 || isNaN(totalValue)):
jQuery('#result').show();
jQuery('#result').html('<p style="color: red; text-align: center;">Οι τιμές δεν μπορεί να είναι κενές ή 0. Ξαναπροσπαθήστε!</p>');
break;
case (result <= 29000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> KPP20 ή PB26 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
case (result > 29000 && result <= 35000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> KPP25 ή PB35 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
case (result > 35000 && result <= 40000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> KPP34 ή PB35 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
case (result > 40000 && result <= 45000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> KPP34 ή PB44 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
case (result > 45000 && result <= 75000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> KPP62 ή PB70 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
case (result > 75000 && result <= 100000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> PB90 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
default:
jQuery('#result').show();
jQuery('#result').html('<p style="color: red; text-align: center;">BOOOOO!</p>');
break;
}
});
});
jQuery(文档).ready(函数(){
jQuery(“#calculateBoiler”)。单击(函数(){
//获取房间面积值
函数getRoomsArea(){
var roomsArea=jQuery(“#roomsArea”).val()
var roomsAreaNew=parseInt(roomsArea).toFixed(1);
控制台日志(roomsAreaNew);
回程房是新的;
}
//获得正确的价值
函数getRoomsHeight(){
var roomsHeight=jQuery(“#roomsHeight”).val();
var roomsHeightNew=parseInt(roomsheigh).toFixed(1);
控制台日志(roomsHeightNew);
返回新房间;
}
//获取输入错误KTU值
函数getBuildingType(){
var buildtypeVal=jQuery('input[name=selectedbuilding]:checked').val();
console.log(buildtypeVal);
返回buildtypeVal;
}
//获取Zesto Nero值
函数getHotWater(){
var hotWaterVal=jQuery('input[name=selectedwater]:checked').val();
console.log(hotWaterVal);
返回热水阀;
}
//获得埃拉克斯蒂热克雷西亚
函数模板定位(){
var tempVal=jQuery('input[name=selectedTemp]:checked').val();
console.log(tempVal);
返回临时值;
}
//获取Monwsh Ktiriou值
函数getthermalination(){
var monwsh=(jQuery('#thermalinsulation:selected').val();
console.log(monwsh);
返回monwsh;
}
var totalValue=(getRoomsArea()*getRoomsHeight()*50)*(gethermalination()*getBuildingType()*templation())+getHotWater();
var结果=(数学四舍五入(totalValue/100)).toFixed(2);
控制台日志(结果);
//计算
开关(结果){
案例(totalValue==0 | | isNaN(totalValue)):
jQuery('#result').show();
jQuery(“#result”).html(“CharStyleιτιΔενμπορεναεκεναικενή0;
打破
案例(结果29000和结果35000和结果40000和结果45000和结果75000和结果200L
Μόνωση
没有一个
5厘米
10厘米
15厘米
Ελάχιστη εξωτερική θερμοκρασία περιοχής
0摄氏度-5摄氏度
-5摄氏度-10摄氏度
-10摄氏度-20摄氏度
我预计输出为15.840,得到1584.00
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form action="" id="boilerpowerForm" onsubmit="return false;">
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="vc_col-sm-4">
<label class="control-label" for="kmkPowierzchnia">Τετραγωνικά κτιρίου</label>
<div class="input-group">
<input type="number" placeholder="Εισάγετε τετραγωνικά π.χ. 20" name="roomsarea" class="form-control" id="roomsarea" value="132">
<span class="input-group-addon">m²</span>
</div>
<label class="control-label">Τύπος κτιρίου</label>
<li> <input type="radio" name="selectedbuilding" value="1.00" checked> Κατοικία (21°C) </li>
<li> <input type="radio" name="selectedbuilding" value="0.80"> Επαγγελματικός χώρος(18°C) </li>
</div>
<div class="vc_col-sm-4">
<label class="control-label">Ύψος κτιρίου</label>
<div class="input-group">
<input type="number" placeholder="Εισάγετε ύψος π.χ. 2.3" name="roomsheight" class="form-control" id="roomsheight" value="2.5">
<span class="input-group-addon">m</span>
</div>
<label class="control-label">Ζεστό νερό χρόνος</label>
<li> <input type="radio" name="selectedwater" value="0.00" checked> none </li>
<li> <input type="radio" name="selectedwater" value="3.000"> < 200 l </li>
<li> <input type="radio" name="selectedwater" value="6.000"> > 200 l </li>
</div>
<div class="vc_col-sm-4">
<label class="control-label">Μόνωση</label>
<div class="input-group">
<select id="thermalinsulation" placeholder="Εισάγετε τετραγωνικά" class="form-control" name="thermalinsulation">
<option value="1.20">None</option>
<option value="1.00">5cm</option>
<option value="0.80">10cm</option>
<option value="0.70">15cm</option>
</select>
</div>
<label class="control-label">Ελάχιστη εξωτερική θερμοκρασία περιοχής</label>
<li> <input type="radio" value="1.00" name="selectedTemp" checked> 0°C - 5°C </li>
<li> <input type="radio" value="1.20" name="selectedTemp"> -5°C - 10°C </li>
<li> <input type="radio" value="1.30" name="selectedTemp"> -10°C - 20°C </li>
</div>
</div>
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="vc_col-sm-12">
<a class="calc-btn" href="#" id="calculateBoiler">SELECT BOILER</a>
</div>
</div>
</div>
<div class="vc_column-inner">
<div class="wpb_wrapper">
<div class="vc_col-sm-12">
<div id="result">
<p></p>
</div>
</div>
</div>
</div>
</form>
<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('#calculateBoiler').click(function() {
// Get Rooms Area Value
function getRoomsArea () {
var roomsArea = jQuery("#roomsarea").val()
var roomsAreaNew = parseInt(roomsArea).toFixed(1);
console.log(roomsAreaNew);
return roomsAreaNew;
}
// Get RoomsHeight Value
function getRoomsHeight () {
var roomsHeight = jQuery("#roomsheight").val();
var roomsHeightNew = parseInt(roomsHeight).toFixed(1);
console.log(roomsHeightNew);
return roomsHeightNew;
}
// Get Typos Ktitiou Value
function getBuildingType() {
var buildtypeVal = jQuery('input[name=selectedbuilding]:checked').val();
console.log(buildtypeVal);
return buildtypeVal;
}
// Get Zesto Nero Value
function getHotWater() {
var hotWaterVal = jQuery('input[name=selectedwater]:checked').val();
console.log(hotWaterVal);
return hotWaterVal;
}
// Get Elaxisti Thermokrasia Perioxis
function tempLocation() {
var tempVal = jQuery('input[name=selectedTemp]:checked').val();
console.log(tempVal);
return tempVal;
}
// Get Monwsh Ktiriou Value
function getThermalInsulation() {
var monwsh = (jQuery('#thermalinsulation :selected').val());
console.log(monwsh);
return monwsh;
}
var totalValue = (getRoomsArea () * getRoomsHeight () * 50) * (getThermalInsulation() * getBuildingType() * tempLocation()) + getHotWater();
var result = (Math.round(totalValue / 100)).toFixed(2);
result /= 100;
console.log(result);
// Calculations
switch (true) {
case (totalValue == 0 || isNaN(totalValue)):
jQuery('#result').show();
jQuery('#result').html('<p style="color: red; text-align: center;">Οι τιμές δεν μπορεί να είναι κενές ή 0. Ξαναπροσπαθήστε!</p>');
break;
case (result <= 29000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> KPP20 ή PB26 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
case (result > 29000 && result <= 35000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> KPP25 ή PB35 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
case (result > 35000 && result <= 40000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> KPP34 ή PB35 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
case (result > 40000 && result <= 45000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> KPP34 ή PB44 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
case (result > 45000 && result <= 75000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> KPP62 ή PB70 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
case (result > 75000 && result <= 100000):
jQuery('#result').show();
jQuery('#result').html( '<h4> <span style="color: #fff; font-size: 16px; display: block; margin-bottom: 10px;">Σύμφωνα με τα δεδομένα που καταχωρήσατε προτεινόμενος λέβητας είναι </span> PB90 </h4>' );
jQuery('#result').append('<img class="boiler-result" src="/wp-content/uploads/2019/06/revo-line-min-1.png">');
jQuery('#result').append('<a class="nectar-button large regular result-btn" href="/revo-line"> Περισσότερα </a> ');
break;
default:
jQuery('#result').show();
jQuery('#result').html('<p style="color: red; text-align: center;">BOOOOO!</p>');
break;
}
});
});
</script>
</body>
</html>
测试一下,上面的代码工作正常……)让我们看看这里:
function getRoomsHeight () {
var roomsHeight = jQuery("#roomsheight").val();
var roomsHeightNew = parseInt(roomsHeight).toFixed(1);
console.log(roomsHeightNew);
return roomsHeightNew;
}
parseInt(roomsHeight).toFixed(1);
返回一个字符串--toFixed()
始终返回一个字符串,因为精确的整数(例如2.1)通常不存在。因此函数getRoomsHeight()
也返回一个字符串
同样适用于getRoomsArea()
稍后您将使用:
var totalValue = (getRoomsArea () * getRoomsHeight () * 50) * ...
结果无效,因为不能将2个字符串相乘
解决方案
在需要数字的地方删除
.toFixed()
。您还应该提供相关的HTML,以便您的问题可以在最短的时间内重现。如果您的问题与parseInt有关,如与parseInt(roomsArea)有关,什么是roomsArea?我们如何知道值是什么?如果您提供一些附带的HTML,允许重现问题,其他人会发现更容易帮助您。尝试注销您的totalValue变量。这是您期望的吗?我们无法看到您的输入等,因此很难提供帮助。基于15.84 t的期望值otalValue sb 1584是真的吗?可能是因为你除以100?var result=(Math.round(totalValue/100)).toFixed(2);我不相信这个代码是有效的。var roomsHeightNew=parseInt(roomsheigh).toFixed(1);
分配一个字符串(不是一个数字),因此getroomsheigh()
返回与getRoomsArea()
相同的字符串,因此getRoomsArea()*GetRoomsHight()
的计算无效。
var totalValue = (getRoomsArea () * getRoomsHeight () * 50) * ...