2015-04-06 38 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

相關問題