2013-10-07 65 views
0

當我嘗試傳遞等於文本框的值的pop_size變量時,出現問題。該變量將用於帶有文本框值的腳本。當我點擊按鈕時,數值發生變化並更新變量的值,然後重新加載頁面,並將變量設置爲文本框中的值。Javascript變量等於文本框的值

<form name="myform1" action="" method="get"> 
    Input the number of populations<br /> 
    <input type="number" name="pop" id="pop" value=5 /><br /> 
    <input type="button" name="b1" id="b1" value="Click to set" 
      onClick="setValue()" /><br /> 
</form> 

function setValue() { 
    var test, test1; 
    test=parseInt(document.getElementById('pop').value); 
    pop_size = test; 
} 

回答

0

如果我正確理解你,你有一個變量集,直到你重新加載工作正常,但後來丟失。

我知道有兩種基本策略可以使頁面重新加載時變量生效。

我列出的第一個看起來更復雜。我會告訴你它的基礎知識,如果你需要,可以告訴你更多。獲得該值後,將其附加到查詢字符串內的網頁地址中。這將是類似於window.location += "?pop_size=" + pop_size;,但它有很多固有的困難:你必須有一個腳本來檢查查詢字符串並從中提取pop_size,並且當你更新它時應該替換查詢字符串中的任何現有的pop_size 。它可以工作,並且您可以找到大量討論查詢字符串和javascript的網頁,但有更簡單的方法。

如果您使用HTML5,更簡單的解決方案是使用sessionStorage。目前它是supported in all major browsers,但我提供給MDN的第一個鏈接爲您提供了一個可以提供向後兼容性的polyfill。它會讓你在瀏覽器中保存變量,直到用戶關閉瀏覽器窗口。

要保存價值,MDN建議你這樣做:

sessionStorage.setItem("pop_size", pop_size); 

與檢索頁面加載的值:

document.getElementById('pop').value = sessionStorage.getItem("pop_size") || 5; // if it's not found, default back to 5. 

老實說,我從來沒有見過這種語法,和我米不確定爲什麼MDN推薦它。 sessionStorage對象的標準用法更加簡單:

sessionStorage.pop_size = pop_size; 
... 
document.getElementById('pop').value = sessionStorage.pop_size || 5; // if it's not found, default back to 5.