2015-04-06 53 views
0

基本上我已经存储了我的javascript结构内的数,类似如下:JavaScript的整数存储未定义出于某种原因

MyProgram.data.main.padding;

console.log(MyProgram.data.main.padding); // will output the number, something like 34. 

不过,我需要存储在一个结构,这个数字我已经在

MyProgram.data.tests.main.padding; // this is a struct " {'width':0, 'padding':0, 'acceptable' //etc...} 

设置的问题是当我这样做:

MyProgram.data.tests.main.padding = MyProgram.data.main.padding; 

console.log(MyProgram.data.tests.main.padding); // shows undefined 

任何想法,为什么我不能储存号码?

我真的很感谢所有帮助...

有人能加载这个例子上的jsfiddle好吗?我不知道如何: http://jsfiddle.net/hdnj52Lp/2/ 结果输出在我的本地测试:0)可以接受的:真正 fontSize的未定义填充:未定义

function MyProgram() { 
var mp = this; 

    this.main = { 
     'data' : { 
      'padding': 50, 
      'fontSize': 10, 
      'tests' : { 
       'padding':null, 
       'fontSize':null, 
       'results':new Array() 
      } 
     }, 

     'test' : function() { 
      console.log('running'); 
      var testResult = {'acceptable':false, 
           'fontSize':0, 
           'padding':0} 

      //after some testing: 
      var newComputedPadding = 100; 
      var newComputedFontSize = 32; 
      var acceptable = true; 
      testResult.acceptable = acceptable; 
      testResult.fontSize = newComputedFontSize; 
      testResult.padding = newComputedPadding; 

      mp.main.data.tests.results.push(testResult); 
      mp.main.outputResults(); 
     }, 

     'outputResults' : function() { 

      for(var i = 0; i < mp.main.data.tests.results.length; i++) { 
       console.log(i + ') acceptable: ' + mp.main.data.tests.results[i].acceptable + ' fontSize ' + mp.main.data.tests.results.fontSize + ' paddingSides: ' + mp.main.data.tests.results.padding); 
     }  
     } 
    } 

} 


var Load; 
if (window.attachEvent) { 
Load =function (elem, event, handler) { 
     elem.attachEvent('on'+event, function load() { 
     handler(); 
     elem.detachEvent('on'+event, load); 
    }); 
}; 
} else { 
Load =function (elem, event, handler) { 
    elem.addEventListener(event, function load() { 
     handler(); 
     elem.removeEventListener(event, load, false); 
    }, false); 
}; 
} 

Load(window, 'load', function() { 
var MP = new MyProgram(); 
MP.main.test(); 
}); 
+1

当您执行console.log时,它会记录什么(MyProgram.data.tests.main) – wonderbell 2015-04-06 05:36:25

+0

您是否在控制台中看到任何错误? – Data2000 2015-04-06 05:37:24

+0

没有错误,并且它记录:[object Object] – RON2015 2015-04-06 05:39:55

回答

2

你只是打印

mp.main.data.tests.results.fontSize 

而不是

mp.main.data.tests.results[i].fontSize 

该代码对于acceptable正确,但是您忘记了[i]部分的fontSizepadding

+0

哈哈。这是一个漫长的一天 – RON2015 2015-04-06 06:12:09

+0

RON2015:不幸的是,在Javascript中,即使在访问字段对象时出现错字也不会引发错误,但只是返回“未定义”并继续前进。有时候这显然是有用的,但它是进入黑暗的一步...... ;-) – 6502 2015-04-06 06:14:15

+0

是的,这是Javascript。你应该阅读https://javascriptweblog.wordpress.com/2010/08/16/understanding-undefined-and-preventing-referenceerrors/那里有很好的信息。 – wonderbell 2015-04-06 07:01:45

相关问题