2017-05-09 40 views
0

在我的情況下,我發現兩個不同函數中的2個不同和的值。現在我需要做的是減去這兩個值,但我不確定是否可以從兩個不同的功能中這樣做。什麼是最好的方式來執行此操作?如何添加兩個不同功能的值?

function networth() 
{ 
    var totNoA = document.getElementsByName("number4[]").length; 
    var sum = 0; 

    for(var i=0; i<totNoA; i++) 
    { 
     sum +=parseInt(document.getElementsByName("number4[]")[i].value); 
     console.log(sum); 
    } 
} 

這裏我有變量'sum'有一個值。

function networth1() 
{ 
    var totNoL = document.getElementsByName("number5[]").length; 
    var sumL = 0; 

    for(var x=0; x<totNoL; x++) 
    { 
     sumL +=parseInt(document.getElementsByName("number5[]")[x].value); 
     console.log(sumL); 

     sum - sumL = total_sum; 
     document.Net_worth.total1.value = total_sum; 
    } 
} 

我想減去sum - sumL但我沒有做正確的。有什麼想法嗎?

+0

你應該使用'parseInt函數(X,10)',而不是'parseInt函數(X)'。 – Pang

+0

您的預期產出是多少?你的實際產出是多少? [MCVE] –

回答

0

您也可以返回總和從這樣的networth功能:

function networth() 
{ 
    var totNoA = document.getElementsByName("number4[]").length; 
    var sum = 0; 

    for(var i=0; i<totNoA; i++) 
    { 
     sum +=parseInt(document.getElementsByName("number4[]")[i].value); 
     console.log(sum); 
    } 
    return sum; 
} 

然後你就可以使用它的價值在你networth1函數,如下所示:

function networth1() 
{ 
    var totNoL = document.getElementsByName("number5[]").length; 
    var sumL = 0; 

    for(var x=0; x<totNoL; x++) 
    { 
     sumL +=parseInt(document.getElementsByName("number5[]")[x].value); 
     console.log(sumL);  
    } 
     var sum = networth(); 
     total_sum = sum - sumL; 
     document.Net_worth.total1.value = total_sum; 
} 

您不需要計算循環內的差異,因爲您只需要最終的差異。你也可以按照其他人的建議。使總和sumL全局變量,而不是使他們本地。

+0

它的工作。所以,當你返回一個值並且想要稍後調用它時,你只需將該值賦給它的函數? (var sum = networth();)這是非常有用的。 –

0

您必須在全局範圍內定義sumsumL。移動var sum = 0var sumL = 0以外的功能,並使用sum-sumL獲得它們的區別。

0

這些函數返回值的總和,寫,執行使用這些函數返回 注值相減多了一個功能:寫入功能,小的N自我解釋的它提高了代碼的可維護性

+0

那麼你是否建議只按照它們的方式離開這兩個函數並創建另一個減去sum - sumL的函數? –

+0

是移動代碼(total_sum =總和 - SUML; document.Net_worth.total1.value = total_sum)到新的函數 和上述功能應該返回總和和SUML值 –

0

在您的代碼中,您在DOM中進行了兩次搜索,每個函數中都有document.getElementsByName,但這不是必需的。

簡化自己的代碼,它應該是這樣的:

function netWorth(query) { 
    var elements = document.getElementsByName(query); 
    var sum = 0; 

    for(var i = 0; i < elements.length; i++) { 
     sum += parseInt(elements[i].value); 
    } 

    return sum; 
} 

var sum = netWorth("number4[]"); 
var sumL = netWorth("number5[]"); 

document.Net_worth.total1.value = (sum - sumL); 
相關問題