2013-08-25 62 views
-1

javascript/jQuery可以在頁面加載(或(文檔).ready)上創建對象,然後稍後使用它們,例如在輸入上的鍵控上使用它們。 如果是這樣,怎麼樣?使用JavaScript創建對象以供以後使用

+2

'VAR OBJ = {};'在全球範圍或者你想使用該對象的功能共享的任何範圍然後只需用'obj'功能內訪問它。變量和範圍的所有基本規則都適用。 –

+0

window.obj = {};將從任何範圍創建一個全局的obj對象,並可以在任何範圍內訪問。 –

+1

你也可以檢查jquery的數據()apis。檢查http://stackoverflow.com/questions/1975095/javascript-save-dynamic-object-in-someplace-for-resuse-byother-methods-later-on更好的回答 –

回答

1

如果你把所有的代碼放在$(document).ready{all code here}那麼你的變量不會超出範圍。

$(document).ready(function(){ 
    var someObject={}; 
    $("selector").click(function(e){ 
    console.log(someObject); 
    }); 
}); 

如果您使用的onclick在HTML,那麼我建議你改變這種狀況,並將所有的JS代碼,JS文件或<script>塊(不是在你的HTML)。

而不是把許多變量放在全局範圍內,你可以命名空間它(如果你不能把所有的代碼放在$(document).ready中)。

var myApplication = myApplication || {};//if myApplication doesn't exist then create it 
myApplication.someObject = {}; 

然後,即使您的JS分散在多個文件中,仍然可以維護一個myApplication對象。

由於gp提到;您可以使用數據將數據添加到html元素:

$("#somebutton").on("click",function(e){ 
    $(this).data("someObject",{});// you can use e.target instead of this as well 
}); 
+0

謝謝你HMR :) – WIRN

0

下面找到一個示例用法。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
    <head> 
    <title></title> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
    </head> 
    <body> 
    TODO write content 
    <div id="MytextID">My text </div> 
    <input type="text" id="inputId" name="name"> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<script> 
    $(document).ready(function(){ 
     var x = $('#MytextID'); 
     $('#inputId').keyup(function(){ 
      alert(x.text()); 
     }) 
    }) 

</script> 
    </body> 
</html>