我已经复制了JavaScript谷歌地图,它工作得很完美,但我需要获得html控件的类型并将其设置为JavaScript。当我试图从lblTitle获取价值时,它不起作用。
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<title>Google Maps Geocoding Demo 1</title>
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></script>
<script type="text/javascript">
//var address = 'Warsaw, PL'; Original var
var address = document.getElementById('lblTitle').innerText;
var map = new google.maps.Map(document.getElementById('map'), {
mapTypeId: google.maps.MapTypeId.TERRAIN,
zoom: 15
});
var geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': address
},
function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
new google.maps.Marker({
position: results[0].geometry.location,
map: map
});
map.setCenter(results[0].geometry.location);
}
});
</script>
答案 0 :(得分:1)
innerText是检索文本内容的方法之一,并且像所有浏览器都不支持的大多数方式一样。如果我是正确的,则Firefox中不支持innerText,因此如果您在Firefox中进行测试,则可能是您无法读取该值的原因。
你应该做的是使用JQuery的text()方法来获取值,因为它具有最大的跨浏览器支持,因此您不需要找出哪个浏览器使用哪个属性。所以在你的例子中:
var address = $("#lblTitle").text();
如果这仍然没有给你文字,那么检查你的浏览器中的html,看看id是否真的是lblTitle。如果你有一个类型为Label的服务器控件,ID为lblTitle,如下所示:
<asp:Label ID="lblTitle" runat="server" />
那么你的客户端id不会是lblTitle,但会有前缀。可以使用属性ClientID请求客户端上的实际ID。所以你在javascript中的行应该是:
var address = $("#<%= lblTitle.ClientID %>").text();