当我在鼠标悬停时传递对象时,我没有在函数中获取对象数据,并且映射网页卡住加载。此框文字在地图上有图像框架。
代码:
function imagefream(Info) {
//Info having data(Info.Lat,Info.Long....etc)
alert(Info.toSource()) //get all data of lat,lon,id..etc
var boxText = document.createElement("div");
boxText.innerHTML = '<div id=\"outer\" style=\"overflow: auto; cursor: default; clear: both; position: relative; background-color: rgb(0, 136, 204); border-color: rgb(0, 136, 204); border-style: solid; border-radius: 5px; border-width: 1px; padding: 3px; width: 50px; height: 50px;\" onMouseOver=\"funinfo(' + Info + ');\" >' +
'</div>';
return boxText;
}
function funinfo(Info) {
alert("123");
alert(Info.toSource());
}
答案 0 :(得分:2)
您正在将字符串连接到对象 - &gt; '...onMouseOver=\" funinfo('+Info+');\"...'
它会产生类似的东西 - &gt; 'onMouseOver="funinfo([object Object]);"'
似乎你想要做的是调用函数funinfo传递对象Info,这就是你在onMouseOver属性中需要的东西。您的代码应该是这样的 - &gt; 'onMouseOver=\" funinfo(Info);\"'
。无需连接对象。
请注意,Info应位于您的窗口或全局空间中。
答案 1 :(得分:1)
这是您的问题的解决方案。注意我正在声明一个名称空间
var myNamespace = myNamespace || {};
$(document).ready(function(){
myNamespace.info = {Lat: 42.123456789, Lng: -41.123456789}; // some object
myNamespace.funinfo = function (Info) {
console.log("logging from funinfo: " + Info.Lat + "," + Info.Lng);
}
myNamespace.imageFrame= function(Info){
myNamespace.info = Info;
console.log("logging from imageFrame: " + myNamespace.info.Lat + "," + myNamespace.info.Lng);
var boxText = document.createElement("div");
boxText.innerHTML = '<div id=\"outer\" style=\"overflow: auto; cursor: default; clear: both; position: relative; background-color: rgb(0, 136, 204); border-color: rgb(0, 136, 204); border-style: solid; border-radius: 5px; border-width: 1px; padding: 3px; width: 50px; height: 50px;\"' +
'onMouseOver=\"myNamespace.funinfo(myNamespace.info);\" >' +
'MyDIb</div>';
return boxText;
}
var d = myNamespace.imageFrame(myNamespace.info);
document.body.appendChild(d);
});