2017-07-24 77 views
0
<script language="JavaScript"> 
<!-- 
window.addEventListener("DOMContentLoaded", function(){ 
var a= document.querySelector("input[name='a']"); 
var b= document.querySelector("input[name='b']"); 
var c= document.querySelector("input[name='c']"); 
var x= document.getElementById("x"); 
var y = document.getElementById("y"); 
var z = document.getElementById("z"); 
var btn = document.getElementById("calc"); 

btn.addEventListener("click", calculate); 

function calculate() { 


var aVal = a.value.trim(); 
var bVal = b.value.trim(); 
var cVal = c.value.trim(); 

if(aVal > 0 && bVal > 0 && cVal > 0){ 

    var ansx = aVal*(1-(cVal/100)); 
    console.log("Answer = " + ansx); 

    ansx = ansx * 100; 
    console.log("Answer times 100 = " + ansx); 

    ansx = Math.ceil(ansx); 
    console.log("Answer times 100, rounded up to nearest whole number = " + ansx); 

    ansx = ansx/ 100; 
    console.log("Answer divided back by 100 = " + x); 

    x.textContent = ansx; 

    var ansy = (ansx/2.2)/((((bVal*0.0328)*12)*0.0254)*(((bVal*0.0328)*12)*0.0254))*2.20462 
    console.log("Answer = " + ansy); 

    ansy = ansy * 100; 
    console.log("Answer times 100 = " + ansy); 

    ansy = Math.ceil(ansy); 
    console.log("Answer times 100, rounded up to nearest whole number = " + ansy); 

    ansy = ansy/ 100; 
    console.log("Answer divided back by 100 = " + ansy); 

    y.textContent = ansy; 

    var ansz = ansy+(6.1*(1.8-(((bVal*0.0328)*12)*0.0254))) 
    console.log("Answer = " + ansz); 

    ansz = ansz * 100; 
    console.log("Answer times 100 = " + ansz); 

    // Next, round answer up to nearest whole number 
    ansz = Math.ceil(ansz); 
    console.log("Answer times 100, rounded up to nearest whole number = " + ansz); 

    ansz = ansz/ 100; 
    console.log("Answer divided back by 100 = " + ansz); 

    z.textContent = ansz; 

} else{ 
    alert("Please Fill form in correctly") 
    } 
    } 
    }); 
</script> 



<div class=form2> 
<form name="form"> 
    <label for="a" class="left">a: </label><input type="text" 
name="a" id="a" size="10"><br> 
    <label for="b" class="left">b: </label><input type="text" 
name="b" id="b" size="10"><br> 
    <label for="c" class="left">c: </label><input type="text" 
name="c" id="c" size="10"> 
<div><input type="button" value="Calculate" id="calc"></div> 
<div class="results"> 
    <span class="left">x: </span><span id="x"></span><br> 
    <span class="left">y: </span><span id="y"></span><br> 
    <span class="left">z: </span><span id="z"></span> 
</div> 
<div class="after"> 
    <input type="reset" value="Reset"> 
</div> 
</form> 
</div> 

我使用上述輸入3個值a,b,c。這些值應該產生結果-x。然後,x應該再次與輸入a,b和c一起使用,以產生y,並再次與z一起使用,如var x,var y和var z所示。來自一個Javascript輸入的多個答案

我很努力,但是,以達到比爲NaN

其他任何回答任何人都可以看到我在做什麼錯。

我已經設法讓它工作,編碼與我最後一個問題(rounding answers to decimal places)類似的方式略有不同,但已被建議我做了錯誤的事情。所以,我試圖以類似的方式來解決這個計算器來我一直在勸

對不起,我已經編輯了以上......我已經改變了

var ansx = a*(1-(c/100)); 

var ansx = aVal*(1-(cVal/100)); 

我仍然沒有得到答案,但: - (

+1

如果您進行了計算,你已經使用了輸入元素,而不是值正常工作。在上面的答案中,'a'已經被分配給'document.querySelector(「input [name ='a']」)。 '。 – benbrunton

回答

0

您正在存儲的值在aVal,bValcVal。但你正在嘗試做e數學表格輸入a,bc,它們不是數字,因此NaN是結果。

if (aVal > 0 && bVal > 0 && cVal > 0) { 
    var ansx = a * (1 - (c/100)); // should be aVal * (1 - (cVal/100)) 

你可能會考慮養成使用更多顯式變量名的習慣,這有助於防止這種錯誤。或者使用較少的中間變量(例如,如果您剛剛捕獲每個值,而不是捕獲一個變量中的表單元素和另一箇中的值,則不會有一組額外的變量混合了。)

0

對不起人民,

我已經解決我自己的問題......在一個函數中使用上面這一個相同的頁面必須已經造成了一些混亂在哪裏輸入A和b。 我已經改變了字母c,d和e和現在

對不起再次

相關問題