2017-07-07 73 views
0

我得到ua和ub的總和並顯示在tu文本框中。我乘以ua 和ga文本框,並顯示在uu文本框以及ub ang gb上。獲取 uu和a的總和並顯示在txt文本框中。我想獲得tt和tu的商 並顯示在gpa文本框中,但它不起作用。請幫忙。 在此先感謝。獲得兩個具有onChange事件的文本框的商

function sum(){ 
 
    var ua = document.getElementById('ua').value; 
 
    var ub = document.getElementById('ub').value; 
 
    var result = parseInt(ua) + parseInt(ub); 
 
    if (!isNaN(result)) { 
 
    document.getElementById('tu').value = result; 
 
    document.getElementById('tu').dispatchEvent(new Event('change')); 
 
    } 
 
    } 
 
    function suma(){ 
 
    var ua = document.getElementById('ua').value; 
 
    var ga = document.getElementById('ga').value; 
 
    var result = parseInt(ua) * parseInt(ga); 
 
    if (!isNaN(result)) { 
 
    document.getElementById('uu').value = result; 
 
    document.getElementById('uu').dispatchEvent(new Event('change')); 
 
    } 
 
    } 
 
    function sumb(){ 
 
    var ub = document.getElementById('ub').value; 
 
    var gb = document.getElementById('gb').value; 
 
    var result = parseInt(ub) * parseInt(gb); 
 
    if (!isNaN(result)) { 
 
    document.getElementById('a').value = result; 
 
    document.getElementById('a').dispatchEvent(new Event('change')); 
 
    } 
 
    } 
 
    function s(){ 
 
    var uu = document.getElementById('uu').value; 
 
    var a = document.getElementById('a').value; 
 
    var result = parseInt(uu) + parseInt(a); 
 
    if (!isNaN(result)) { 
 
    document.getElementById('tt').value = result; 
 
    document.getElementById('tt').dispatchEvent(new Event('change')); 
 
    } 
 
    } 
 
    function g(){ 
 
    var tt = document.getElementById('tt').value; 
 
    var tu = document.getElementById('tu').value; 
 
    var result = parseFloat(tt)/parseFloat(tu); 
 
    if (!isNaN(result)) { 
 
    document.getElementById('gpa').value = result; 
 
    } 
 
    } 
 

 

 
<input type="text" id="ua" name="ua" size="7" onkeyup="sum();"> 
 
    <input type="text" id="ga" name="ga" size="7" onkeyup="suma();"> 
 
    <input type="text" id="uu" name="uu" size="7" onchange="s();"/> 
 

 
    <input type="text" id="ub" name="ub" size="7" onkeyup="sum();"> 
 
    <input type="text" id="ga" name="ga" size="7" onkeyup="sumb();"> 
 
    <input type="text" id="a" name="a" size="7" onchange="s();"/> 
 

 
    <input type="text" id="tu" name="tu" onchange="g();"/> 
 
    <input type="text" id="tt" name="tt" onchange="g();"/> 
 

 
    <label>GPA</label> 
 
    <input type="text" id="gpa" />

+0

做的第一件事就是把一些標籤旁邊的文本字段,以便很清楚每個什麼是爲了。此外,請解釋「不起作用」的含義。你的開發者控制檯中有錯誤嗎? –

+0

這些函數在哪裏被調用?你有內聯事件監聽器嗎? – PeterMader

+0

'document.getElementById('a')'?沒有ID爲'a'的元素。 – PeterMader

回答

0

據我可以告訴,一切都在你的代碼工作(你的編輯之後),除非你想在功能sumb的ID gb來獲取元素,但元素不存在。現在,您的代碼將顯示tt(HTML中的第二個)值除以tu(首先在HTML中)的值的結果。

這就是說,當你說「它不工作」時,我仍不確定你的意思。我唯一能想到的是,您必須從tutt輸入元素中移除焦點,以便使gpa元素顯示結果,因爲您使用的是onchange而不是onkeyup

正如其他人已經指出的,我也想強調的是,你應該嘗試給你的變量有意義的名字。當你在三年內查看你的代碼時,你是否認爲你仍然知道「gpa」和「uu」是什麼?

在下面的代碼片段中,我只複製了與該部門相關的<input>。我用addEventListener而非內聯事件偵聽器(onkeyup="sumb();"),並使其更具可讀性:

var dividendElement = document.getElementById('dividend'); 
 
var divisorElement = document.getElementById('divisor'); 
 
var resultElement = document.getElementById('result'); 
 

 
function updateQuotient() { 
 
    var result = parseFloat(dividendElement.value)/parseFloat(divisorElement.value); 
 
    if (!isNaN(result)) { 
 
    resultElement.value = result; 
 
    } 
 
} 
 

 
dividendElement.addEventListener('keyup', updateQuotient); 
 
divisorElement.addEventListener('keyup', updateQuotient);
<input type="text" id="dividend"> 
 
/
 
<input type="text" id="divisor"> <!-- <input> elements don't need a closing tag! --> 
 
= 
 
<input type="text" id="result">