2013-06-03 51 views
0

我有一小段代碼將一些值寫入表單內的textarea。每當我點擊一個按鈕時寫。但是,如果我多次點擊按鈕,他們會一遍又一遍地寫。我需要能夠多次單擊該按鈕(例如,如果用戶更改了值),並讓我寫的值只是刷新而不是重複。以下是我有...如何讓這些值不被重寫到HTML中?

var endwallPanelLengths = [totalHeightInches]; 
    var i = 0; 
    while (endwallPanelLengths[i] > eaveInches) 
    { 
     endwallPanelLengths.push(endwallPanelLengths[i] - peakHeightDecrease); 
     document.getElementById("test83").value += "4 - " + endwallPanelLengths[i] + "\n"; 
     i++; 
    } 

當我點擊按鈕,在第一時間值是正確的但他們之後everytome再寫我點擊它?

回答

1

我想你想要做整個迭代當用戶更改值。然後你只需要在循環之前將textarea的值重置爲空。這樣的事情:

var endwallPanelLengths = [totalHeightInches]; 
var i = 0; 
document.getElementById("test83").value = ''; //Reset the value 
while (endwallPanelLengths[i] > eaveInches) { 
    endwallPanelLengths.push(endwallPanelLengths[i] - peakHeightDecrease); 
    document.getElementById("test83").value += "4 - " + endwallPanelLengths[i] + "\n"; 
    i++; 
} 

我已經制定了demo page。希望這就是你以後的樣子。

2

在這一行:

document.getElementById("test83").value += "4 - " + endwallPanelLengths[i] + "\n"; 

要追加一個值test83。據推測(因爲我看不到你的HTML !!!)你只需要從+=刪除+

編輯:如果你要附加的價值在循環,沒有別的,只要你輸入你的循環之前清除值,並離開+=

document.getElementById("test83").value = ""; 
var endwallPanelLengths = [totalHeightInches]; 
...... 
+0

我認爲OP每次用戶更改一個值時都希望執行整個while循環。將「+ =」更改爲「=」將只有textarea中的最後一個值。 – bigbearzhu

+0

啊,看起來很合理。由於他們沒有把他們的HTML!我會提出一個替代方案。 – Colleen

1

試試這個:

var endwallPanelLengths = [totalHeightInches]; 
var i = 0; 
document.getElementById("test83").value = ''; 
while (endwallPanelLengths[i] > eaveInches) 
{ 
    endwallPanelLengths.push(endwallPanelLengths[i] - peakHeightDecrease); 
    document.getElementById("test83").value += "4 - " + endwallPanelLengths[i] + "\n"; 
    i++; 
} 

我假設所有的代碼在每次點擊按鈕時執行,對嗎?

+0

沒有認出我的答案和你的一樣。對不起,無論如何upvoted你的答案。 – bigbearzhu

0

你需要實現可檢查文本是否存在一個clickEventhandler .....