动态初始化javascript对象文字属性

时间:2015-05-21 06:16:11

标签: javascript jquery html

我想将HTML页面中的输入值定义为javascript Literal对象属性,但是在JS文件中访问时出现未定义错误。

假设我有一个像HTML一样的输入值

  

< input type =“hidden”id =“someid”value =“dbform in arrayform”>

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

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

现在,在另一个JS文件(B.js)中,我称之为

  

的console.log(abc.x());

任何解决方案?

3 个答案:

答案 0 :(得分:0)

x不是函数,而是string

你应该把它称为:

console.log(abc.x);

答案 1 :(得分: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 :(得分:0)

A.js

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

B.js

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

请注意,$("#someid").val()将返回一个字符串,因此您可能需要转换为数组。