繁体   English   中英

无法正确连接输入范围值到javascript计算

[英]Can't connect properly an input range value to javascript calculation

我创建了(在模板上构建)一个简单的js表单。 一切都在使用“无线电”和“选择”输入,但我无法连接“范围”值以将其与其他所有内容相加。

这个形式和计算如何工作:(抱歉很多noobcode)

 function showVal(newVal){ document.getElementById("valBox").innerHTML=newVal; } function valNum(){ var valNum = document.getElementById("valBox") } var cake_prices = new Array(); cake_prices["Round6"]=9; cake_prices["Round8"]=11; cake_prices["Round10"]=12; var filling_prices= new Array(); filling_prices["Yearone"]=12; filling_prices["Yeartwo"]=60; filling_prices["Yearthree"]=120; var billing_prices= new Array(); billing_prices["Billone"]=100; billing_prices["Billtwo"]=200; billing_prices["Billthree"]=300; billing_prices["Billfour"]=400; billing_prices["Billfive"]=300; function getCakeSizePrice() { var cakeSizePrice=0; //Get a reference to the form id="cakeform" var theForm = document.forms["cakeform"]; //Get a reference to the cake the user Chooses name=selectedCake": var selectedCake = theForm.elements["selectedcake"]; //Here since there are 4 radio buttons selectedCake.length = 4 //We loop through each radio buttons for(var i = 0; i < selectedCake.length; i++) { //if the radio button is checked if(selectedCake[i].checked) { //we set cakeSizePrice to the value of the selected radio button //ie if the user choose the 8" cake we set it to 25 //by using the cake_prices array //We get the selected Items value //For example cake_prices["Round8".value]" cakeSizePrice = cake_prices[selectedCake[i].value]; //If we get a match then we break out of this loop //No reason to continue if we get a match break; } } //We return the cakeSizePrice return cakeSizePrice; } function getBillingPrice() { var cakeBillingPrice=0; //Get a reference to the form id="cakeform" var theForm = document.forms["cakeform"]; //Get a reference to the select id="filling" var selectedBilling = theForm.elements["billing"]; //set cakeFilling Price equal to value user chose //For example filling_prices["Lemon".value] would be equal to 5 cakeBillingPrice = billing_prices[selectedBilling.value]; //finally we return cakeFillingPrice return cakeBillingPrice; } function calculateTotal() { //Here we get the total price by calling our function //Each function returns a number so by calling them we add the values they return together var cakePrice = (getCakeSizePrice() + getBillingPrice()) * valNum(); var num = (cakePrice); var miPrice = parseInt (num - (num * .35)); var miDiff = parseInt(cakePrice - miPrice); //display the result var divobj = document.getElementById('totalPrice'); divobj.style.display='block'; divobj.innerHTML = "Total "+cakePrice; var divobj = document.getElementById('miPrice'); divobj.style.display='block'; divobj.innerHTML = "Total "+miPrice; var divobj = document.getElementById('miDiff'); divobj.style.display='block'; divobj.innerHTML = "Total "+miDiff; } 
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/> <title>Cake Form</title> <script type="text/javascript" src="js/formcalculations.js"></script> <link href="styles/cakeform.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="wrap"> <form action="" id="cakeform" onsubmit="return false;"> <div> <div class="cont_order"> <fieldset> <label >Select your province</label> <label class='radiolabel'><input type="radio" name="selectedcake" value="Round6" onclick="calculateTotal()" />SASKATCHEWAN</label><br/> <label class='radiolabel'><input type="radio" name="selectedcake" value="Round8" onclick="calculateTotal()" />MANITOBA</label><br/> <label class='radiolabel'><input type="radio" name="selectedcake" value="Round10" onclick="calculateTotal()" />ALBERTA</label><br/> <br/> <br/> <br> </br> <label >BILL</label> <select id="billing" name='billing' onchange="calculateTotal()"> <option value="Billone">100</option> <option value="Billtwo">200</option> <option value="Billthree">300</option> <option value="Billfour">400</option> <option value="Billfive">500</option> </select> <br/> <label >TOTAL WITH UTILITY</label> <div id="totalPrice"></div> <label >TOTAL WITH MI</label> <div id="miPrice"></div> <label >TOTAL SAVED</label> <div id="miDiff"></div> <br> <span id="valBox"></span> <input type="range" min="5" max="10" step="1" oninput="showVal(this.value)" onchange="showVal(this.value)"> </fieldset> </div> </div> </form> </div><!--End of wrap--> </body> </html> 

一切都工作没有“范围”输入和valNum(我是否正确创建?)功能。 就像我在做:

function calculateTotal()
{
    var cakePrice = (getCakeSizePrice() + getBillingPrice());
}

但当我添加newVal函数时,chrome显示总数:NaN;

function calculateTotal()
{
    var cakePrice = (getCakeSizePrice() + getBillingPrice()+newVal();
}

一切都工作没有“范围”输入和valNum(我是否正确创建它?)功能....

var cakePrice = (getCakeSizePrice() + getBillingPrice()) * valNum();

- valNum() func不返回任何值。

但当我添加newVal函数时,chrome显示总数:NaN;

var cakePrice = (getCakeSizePrice() + getBillingPrice()+newVal();

- 我没有在代码中看到newVal()函数。 有一个newVal变量,但它的范围仅限于功能。


定义一个全局变量,然后定义如下函数:

var valNum;
function valNum(){
    valNum = document.getElementById("valBox")
}

并使用valNum如下:

var cakePrice = (parseFloat(getCakeSizePrice()) + parseFloat(getBillingPrice())) * parseFloat(valNum);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM