2015-05-21 42 views
0

我想定义从HTML页面的输入值作为JavaScript文字对象属性,但我越来越未定义访问JS文件时出错。初始化javascript对象文字属性动态

假设我有一个输入值等作为HTML

< INPUT TYPE = “隐藏” ID = “someid” 值= “dbvalues在arrayform” >

现在这个值i我试图定义像(A.js)如下:

var abc = { 
    x : $("#someid").val(), 
    y: function(){ 
    console.log(this.x); 
    } 
} 

现在在另一个JS文件(B.js)当我把它作为

console.log(abc.x());

任何解决方案?

回答

0

A.js

var abc; 
$(function() { 
    abc = { 
     x: $("#someid").val(), 
     y: function(){ 
      console.log(this.x); 
     } 
    } 
}); 

B.js

$(function() { 
    abc.y(); 
}); 

注意$("#someid").val()将返回一个字符串,所以你可能需要转换成到一个数组。

+0

你问#问题'答案' – Tushar

+0

是的..即使这是行不通的.. – Gags

+0

@ Gags我编辑了我的答案。它现在工作吗? – RichN

0

x不是功能,它是string

你应该叫它为:

console.log(abc.x); 
0

两件事情 - 首先它不会是console.log(abc.x());x()是你如何调用一个函数,你可以调用abc.y();尽管它是一个功能。

的另一件事是,jQuery的必须加载,我想你想在此之后,DOM满载

此代码定义var abc = {已被执行:

$(function(){ // this ensures DOM is ready, careful about where you want to call abc from though; 
    var abc = { 
     var me = this; 
     x : function(){ return $("#someid").val()}, 
     y: function(){ 
     console.log(me.x); // try this instead it will help with 'this' confusion 
     } 
    } 
}); 

现在你可以调用

console.log(abc.x());

+2

'var abc = {var i = this;'是无效的语法 –

+0

和你的解决方案有两个错误......第一个是由@RobM提到的。其次是控制台语句将返回功能,因为它是因为它是从来没有执行... – Gags