我创建了一个以气泡作为标记的谷歌地图。我在后面的代码中创建了一个数组,并设置了一个包含这些值的文本框。文本框中填充了正确的值,但我无法从jquery / javascript中读取值...
使用这些声明时:
var markers = $('#txtMarkers').val();
var markers = document.getElementById('<%=txtMarkers.ClientID%>')
我收到此错误消息:
0x800a138f - JavaScript runtime error: Unable to get property '0' of undefined or null reference
当我使用它时:
var markers = document.getElementById('<%=txtMarkers.ClientID%>').value;
我收到此错误消息:
0x800a138f - JavaScript runtime error: Unable to get property 'value' of undefined or null reference
但是,文本框正在填充。这是在文本框中填充的内容(添加了手动值以查看文本框中填充的内容):
[{"title":"DRIVER","lat":"25.9820333333333","lng":"28.1289333333333","description":"0.6608917"},
{"title":"DRIVER","lat":"-25.982","lng":"28.1289333333333","description":"0.6643902"},
...more values}]
手动添加这些值会加载地图和标记,但它似乎不会从文本框中读取值。我做错了吗?
当我把$(文件).ready(function(){});在页面上我收到错误
0x800a1391 - JavaScript runtime error: 'initialize' is undefined
所以我把body标签中的onload =“initialize()”输出,导致出现这个错误:
0x800a138f - JavaScript runtime error: Unable to get property 'lat' of undefined or null reference
在这段代码中,因为没有信息,因为方法必须在加载之前运行(来自db的信息):
var mapOptions = {
center: new google.maps.LatLng(markers[0].lat, markers[0].lng),
zoom: 8,
mapTypeControl: true,
panControl: true,
zoomControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
答案 0 :(得分:1)
由于在加载DOM元素之前您的客户端脚本要求该元素的值,您可能会得到null或未定义的值。
<强> Here's a similar scenario 强>
演示应用程序:
MyForm.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="MyForm.aspx.cs" Inherits="_24733063.MyForm" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-1.10.2.js"></script>
<script type="text/javascript">
$(document).ready(function () {
alert($("#dataTextBox").val());
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="dataTextBox" runat="server" />
</div>
</form>
</body>
</html>
MyForm.aspx.cs
protected void Page_Load(object sender, EventArgs e)
{
dataTextBox.Text = "some text values";
}