JSON 对象属性在映射事件处理程序中未定义
JSON object properties are undefined in Maps event handler
我在这里阅读了一些线程,我知道我的globalSettings
属性在google.maps.event.addDomListener
函数中不可用存在范围问题。
console.log
语句返回undefined
,但是如果我console.log(globalSettings)
,它会显示对象及其属性。
如何使属性可用,以便使用它们初始化地图中心并进行缩放?
var globalSettings = jQuery.parseJSON(wpmm_settings);
var ICON = new google.maps.MarkerImage('medicare.png', null, null,
new google.maps.Point(14, 13));
var SHADOW = new google.maps.MarkerImage('medicare-shadow.png', null, null,
new google.maps.Point(14, 13));
google.maps.event.addDomListener(window, 'load', function(globalSettings) {
console.log(globalSettings.map_center_lat);
var map = new google.maps.Map(document.getElementById('map-canvas'), {
center: new google.maps.LatLng(globalSettings.map_center_lat, 135),
zoom: 4,
mapTypeId: google.maps.MapTypeId.ROADMAP
});...
wpmm_settings
是一个字符串:
"[{'"default_zoom'":'"8'",'"map_center_lat'":'"51.4992913'",'"map_center_lng'":'"-0.1639785'"}]"
globalSettings
是解析该字符串的结果:
[Object { default_zoom="8", map_center_lat="51.4992913", map_center_lng="-0.1639785"}]
请注意,由于最外面的方括号,它最终成为单元素数组。
map_center_lat
的值作为globalSettings[0].map_center_lat
进行访问。
如果从字符串中删除最外层的方括号,则会得到单个"裸"对象,并且可以按预期访问属性。
然后。。。
google.maps.event.addDomListener(window, 'load', function(globalSettings) {...
不globalSettings
传递给事件处理程序。事件被传递 — 这是标准行为:事件被传递给事件处理程序。此行的作用是将该函数内部globalSettings
设置为 window.load
事件。因此,您需要将提及globalSettings
替换为类似evt
的内容,您可以在函数中忽略它。
代码段中的代码...
仍然存在问题,但正确获取对象和事件处理程序将使查找它们更容易。
相关文章:
- 为什么这个函数调用会破坏程序并导致未定义的变量
- importScripts在web工作程序中返回未定义的
- 注入应用程序的角度控制器未定义
- 为什么我的程序提醒未定义的值
- Ionic应用程序在部署后给出ReferenceError:未定义Promise
- 运行此程序后出现错误,未捕获的类型错误:无法读取未定义的属性“推送”
- JSHint 错误:未定义我的应用程序 (W117)
- 尝试从我的 chrome 扩展程序访问 gmail 中的 iframe 时出现未定义的错误,但不是从开发者控制台访问
- 应用程序.js未在开发中加载(未捕获的引用错误:未定义 $)
- Javascript 运行时错误:“应用程序未定义”
- dhtmlx多个调度器不工作错误”;调度程序未定义”;
- 测试Ember.JS应用程序失败,返回ReferenceError:未定义Ember
- 引用错误: 电子表格应用程序未定义
- 主干应用程序未定义错误
- 简单Javascript程序:未定义Uncaught ReferenceError:x
- 安贝App.router.“应用程序未定义”
- jQuery处理程序未定义(handler.guid)
- “电子表格应用程序未定义”;当从JavaScript访问电子表格时
- SugarCRM企业6.5 -“应用程序未定义”
- 承诺实现处理程序未定义