2016-09-30 63 views
0

因此,我正在製作一個應用程序,它在堅果殼中從用戶處獲取尺寸並吐出表面區域,但它很快變得非常重複。存儲本地變量,然後重新運行功能?

function calc() { 
 

 
    var dim1main = +document.getElementById("dim1main").value || 0; 
 
    var dim2main = +document.getElementById("dim2main").value || 0; 
 
    var mainSurA = dim1main * dim2main; 
 
    
 
    var dim1mainD1 = +document.getElementById("dim1mainD1").value || 0; 
 
    var dim2mainD1 = +document.getElementById("dim2mainD1").value || 0; 
 
    var mainD1SurA = dim1mainD1 * dim2mainD1; 
 
    
 
    // ... 
 
    
 
    var dim1mainD6 = ... 
 
    
 
    // ... 
 
    
 
    var totalSurA = mainSurA + mainD1SurA ... + mainD6SurA; 
 
}

這樣的想法是有數以百計的隱藏,直到用戶想要他們,留下空將爲零貫穿一切,爲此不與總搞亂文本輸入。我認爲我很安全,認爲這是可怕的JavaScript。

我一直在尋找一種方法來多次運行一個函數,並將每個局部變量存儲在某個地方供以後使用。我通過刪除輸入值onClick來玩數組,但每次我用.push運行函數時,都會用第二個值替換第一個值。我已閱讀了關於localStorage的內容,但我不確定這是我在找什麼。有什麼建議麼?對不起,如果這太模糊。

我已閱讀關於在對象以及全局變量中存儲數據,但我聽說會變得混亂。

+0

是否需要在頁面加載之間訪問? –

+0

我打算讓它成爲一個頁面,用事件偵聽器隱藏元素。 –

回答

0

你可以做到這一點的一種方法,而不是隱藏很多元素,你可以在需要時動態創建新的輸入元素。你可以給你的元素一個特定的類,你可以通過HTMLCollection獲取它並計算總維度。

例如:

document.getElementById('add').onclick = function() 
 
{ 
 
    var container = document.getElementById('container'); 
 
    var subContainer = document.createElement("div"); 
 
    var dim1 = document.createElement("input"); 
 
    var dim2 = document.createElement("input"); 
 
    dim1.className = "dim1"; 
 
    dim2.className = "dim2"; 
 
    dim1.value = dim2.value = 0; 
 
    subContainer.className = "sub-container"; 
 
    subContainer.appendChild(dim1); 
 
    subContainer.appendChild(dim2); 
 
    container.appendChild(subContainer); 
 
} 
 

 
document.getElementById('calc').onclick = function() 
 
{ 
 
    var arrayDim1 = document.getElementsByClassName('dim1'); 
 
    var arrayDim2 = document.getElementsByClassName('dim2'); 
 
    var totalSurA = 0; 
 
    for (var i = 0; i < arrayDim1.length; i++) { 
 
     totalSurA += +arrayDim1[i].value * +arrayDim2[i].value; 
 
    } 
 
    console.log(totalSurA); 
 
}
<div id="container"></div> 
 
<button id="add">Add Dimension</button> 
 
<button id="calc">Calculate</button>


對於存儲過去頁面會話就可以使用localStorage如你所說。我會在JavaScript作爲各行項目的二維陣列(或者您可以使用對象的數組與DIM1/DIM2屬性),像這樣:

[ 
    [dim1_0, dim2_0], 
    [dim1_1, dim2_1], 
    ... 
] 

雖然它保存到本地存儲,然後需要它的文本格式,您可以將其轉換爲使用JSON.stringify()

+0

不應該說謝謝,但謝謝,男人。你只是把我變成了一些很酷的東西。 –

相關問題