2011-07-07 29 views
0

好的noobablicious問題。但是讓我總結了一下。js致電變量值變量

Im在一個函數中聲明帶有Js腳本的隱藏表單域的值。

例如這些只是一些例子,不是真正的腳本。

function myFunction(){ 
    var text = "hello world"; 
    var number = 12345; 



    document.getElementById('text').value= text; 
    document.getElementById('number').value= number; 

    } 

然後,我希望能夠在另一個腳本中使用表單值的值作爲變量。我意識到可以選擇全局聲明這些變量。但是我聽說它並不安全。或者像我一樣精簡。

第二個腳本例子...

var autoText = document.getElementById('text').value; 
    var autoNumber = document.getElementById('number').value; 

    ...do stuff with variables. 

但是這不工作,並返回undefined。這是正確的DOM路徑來訪問我的表單字段的值,或者我需要找到一個屬性及其子?

還有什麼其他的選擇可以給我?

謝謝你的時間。 HTML是...

<form action="http://mysite/mypath" method="post"> 

    <input type="text" name="text" id="text" value=""> 
    <input type="text" name="text" id="number" value=""> 
    <input type= "submit" name="go" value="go" allign="middle"/> 
    </form> 

+0

請更新您的問題,包括爲有問題的隱藏字段示例HTML。假設您實際上有一個id爲'text'的元素,並且您的HTML中沒有任何重複的id,您當前的'document.getElementById('text')。value;'語法看起來很好。我知道你說過這只是一個示例,但是你的'myFunction()'有一個錯誤:'數字'變量用's'聲明,但是在沒有's'的情況下作爲'數字'訪問。 (另:'sumped'?) – nnnnnn

回答

0

或者,您可以將該數據存儲在閉包中,以便兩個函數都可以訪問該變量,但它不存儲在全局範圍中。像這樣:

(function(){ 
    var text = "blah blah", 
     number = 12345; 

    function insertValues() { 
    document.getElementById('text').value= text; 
    document.getElementById('number').value= number; 
    } 
    function otherStuffWithValues() { 
    alert(text); 
    alert(number); 
    } 
    insertValues(); 
    otherStuffWithValues(); 
}()) 

此外,您也可以宣佈的第一個函數中的變量,然後傳遞變量到第二功能像這樣的參數:

function insertValues() { 
    var text = "blah blah", 
     number = 12345; 
    document.getElementById('text').value= text; 
    document.getElementById('number').value= number; 
    otherstuff(text,number) 
} 

function otherstuff(sometext,somenumber) { 
    alert(sometext); 
    alert(somenumber); 
} 
insertValues() 
+0

那是行得通的。謝謝你的時間。 – Christopher

1

這應該是罰款,假設你有正確的ID設置爲你想要的元素。請記住,該ID必須是唯一的,否則將出現不可預知的問題。

在加載DOM之後,請確保您正在運行代碼。否則該元素可能還不存在於DOM中,因此document.getElementById方法將無法找到它。

-1

我認爲在頁面加載時您沒有設置啓動腳本。如果是這樣,您可以使用這個簡單的事件處理程序:

window.onload = myFunction; 

隨着myFunction將與您的上述代碼功能。

+0

否從正文onload調用myFunction()。但是謝謝你的時間。 – Christopher