2013-10-16 67 views
1

後,我有匿名函數這code..which包裝包裝成匿名函數的JavaScript代碼不工作

(function() { 
    console.log("writting dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); 

window.onMessage1 = function(messageEvent) { 
    console.log("writting dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); 
    console.log(messageEvent.data["color"]); 
    return $("form#credit-info-form").append(messageEvent.data["color"]); 
}; 

}).call(this); 

錯誤是「類型錯誤:無法讀取屬性‘’未定義」數據

但是當我正在執行以上無需匿名函數包裝代碼,那麼它的工作..是在函數名

同樣的錯誤,我也解決了用make「onMessage1」到「window.onMessage1」全球範圍內..

任何解決方案如何使用anoymous函數?

感謝

+0

你是如何觸發/使用'onMessage1'? – Chandu

+0

將onMessage1定義爲全局作用域後,只需通過'onMessage1()' –

回答

0

messageEvent參數爲undefined,這意味着你沒有傳遞參數給window.onMessage1當你調用它。

// this is the parameter---------v 
window.onMessage1 = function(messageEvent) { 
    console.log("writting data"); 

// you use it here--v 
    console.log(messageEvent.data["color"]); 

    //---------------------------and here--------v 
    return $("form#credit-info-form").append(messageEvent.data["color"]); 
}; 

所以當你調用它,你需要通過具有data屬性的一個參數。

window.onMessage1(my_object); 
0

這將工作

(function() { 
    console.log("writting dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); 
    window.onMessage1 = (function(messageEvent) { 
     console.log("writting dataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); 
     console.log(messageEvent.data["color"]); 
     //return $("form#credit-info-form").append(messageEvent.data["color"]); 
    }); 
})(); 

調用函數

onMessage1({'data':{'color':'red'}}); 

$("form#credit-info-form")似乎與id=credit-info-form一種形式,要附加messageEvent.data["color"],是你在做什麼?似乎對我錯了。

此外,爲什麼你使用匿名函數?由於您正在使用window.onMessage1 = function(){...}進行全局功能。