2014-02-19 12 views
0

我有類似HTML的JavaScript的數組表現不同

<div id="MAC_Allocation_Heading"> 
       <span style="position:relative;left:2%;"> 
        MAC Allocation 
       </span> 
       <span style="position:relative;left:9%;"> 
        <label>Quantity</label> 
        <input type="text" style="width:40%" name="txtMACNeededAllocations"/> 
       </span> 
    </div> 

現在在我的js文件我有一個全局數組作爲

var user_entry = [$("#MAC_Allocation_Heading input[type=text]:first")] 

和內部FormValidate()我有以下代碼

function FormValidate() { 

    console.log(user_entry[0].val()); 
} 

我運行應用程序並在文本框中輸入了值。但我得到的控制檯輸出爲'undefined'

如果我把數組「user_entry」放在函數中,那麼我可以獲得文本框的值。
是什麼原因?
我很想保持全球這個數組,因爲它會被其他功能一起使用也

+9

最有可能你正在運行'var user_entry = [$(「#MAC_Allocation_Heading input [type = text]:first」)]'元素存在之前,因此你得到一個空的jQuery對象。請閱讀[** jQuery教程**](http://learn.jquery.com/about-jquery/how-jquery-works/):*「要在文檔準備好被操作時立即運行代碼, jQuery有一個名爲ready事件的語句:'$(document).ready(function(){...});'「* –

+1

不可以。我正在一個按鈕上運行該功能點擊 –

+4

我不是在談論這個功能。我在談論變量賦值。 –

回答

0

試試這個:

var user_entry = []; 


    function FormValidate() 
    { 
     alert(user_entry[0].val()); 
    } 

    $(document).ready(function() 
    { 
     user_entry = [$("#MAC_Allocation_Heading input[type=text]:first")] 
    }) 

通過這個就可以實現「我很想把這個數組全局,因爲它會也被其他功能使用「。

0

我得到的問題按上述評論

我初始化裏面的$(document)()函數({...})數組。就緒;
這解決了我的問題

的問題是我包括標記之前的.js文件,以便DOM完全加載之前,我試圖去這顯然是空的對象的引用