2013-10-16 42 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(){...}进行全局功能。