由于某种原因,JavaScript整数存储为未定义

时间:2015-04-06 05:27:40

标签: javascript html

基本上我的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 个答案:

答案 0 :(得分:2)

您只是打印

mp.main.data.tests.results.fontSize

而不是

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

代码对于acceptable是正确的,但您忘记了[i]fontSize的{​​{1}}部分。