2012-09-27 88 views
1

我需要通過循環獲取變量的結果,我試圖通過使其成爲全局變量來獲取它的值,但它的值不會改變。這可能嗎?是否有可能將函數中的循環中的變量的值獲取到全局變量中?

這裏是我的代碼,我試圖讓變量t的值:

var t; 

function processSplashbacks() { 
    var splashbacks = document.worktopForm.splashbacks.value; 
    for (t = 1; t <= splashbacks; t++){ 
     var splashbackInfo = '<label> Length: </label><input type="text" id="length' + t + '" value="0"/>(cm)<br /><label> Width: </label><input type="text" name="width' + t + '" value="0"/>(cm)<br /><br />'; 
     document.getElementById("splashWidLen").innerHTML += 'Splashback ' + t + ' dimensions<br />' + splashbackInfo; 
    } 
} 

function deleteSplashbacks() { 
    document.getElementById("splashWidLen").innerHTML = ""; 
} 

console.log(t); 

謝謝!

+0

那麼你曾經稱此代碼? – lonesomeday

+0

我沒有看到你在哪裏調用processSplashbacks。那是額外的代碼嗎?另外,最初設置了什麼? – jalynn2

+0

我通過一個按鈕和onClick方法調用它 –

回答

4

嘗試:

<input type="button" value="Add Splashbacks" onClick="processSplashbacks(); console.log(t);"/> 

從我所看到的,你只在一個地方叫console.log(t)。它只在頁面加載時記錄下來,這是在用戶點擊按鈕之前。在函數調用之後,您必須再次撥打console.log(t);

也就是說,一個全局變量可能不是最好的解決方案。你會過得更好使該功能return t;,然後登錄返回,就像這樣:

<input type="button" value="Add Splashbacks" onClick="console.log(processSplashbacks());"/> 
1

所以你只是試圖將變量設置爲全局變量?

這應該工作:window.t = t; 只要把它放在循環內並增量。

我不知道這實際上是多麼有用。你確定你想能夠訪問循環控制變量嗎?

+0

我會試試這個。我需要得到t的價值,看看有多少新的投入,所以我可以加起來他們的價值 –

1

在你的代碼的4個語句有:T的

  • 聲明的兩個函數
  • 聲明
  • 印花T

他們都是在頁面加載時,卻宣告富潤nction不會執行它...每當函數執行時,它將在您的console.log(t)聲明之後。

現在,如果你這樣寫:

onClick="processSplashbacks(); console.log(t);" 

那麼它應該工作

1

的功能定義,並登錄該變量到控制檯的功能運行之前。相反,您可以重寫函數來定義並返回它自己的t,然後onclick處理程序可以將其顯示到日誌中。

相關問題