无法通过 id 获取输入值
failed to get input value by id
我有这个检测经度和纬度的代码,它成功地输入了但我无法检索输入值,请帮我找出问题所在。我试了jquery,也找不回来
这是我的代码:-
var startPos;
navigator.geolocation.getCurrentPosition(function(position) {
startPos = position;
$('#pokemon_lat').val(startPos.coords.latitude);
$('#pokemon_long').val(startPos.coords.longitude);
}, function(error) {
alert('Error occurred. Error code: ' + error.code + '');
// error.code can be:
// 0: unknown error
// 1: permission denied
// 2: position unavailable (error response from locaton provider)
// 3: timed out
});
$(function($) {
// Asynchronously Load the map API
var script = document.createElement('script');
script.src = "//maps.googleapis.com/maps/api/js?key=shcschds&sensor=true&callback=initialize";
document.body.appendChild(script);
});
function initialize() {
var map;
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
mapTypeId: 'roadmap'
};
// Display a map on the page
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
map.setTilt(45);
// Multiple Markers LatLong
var lat = document.getElementById("pokemon_lat").value;
var longi = document.getElementById("pokemon_long").value;
console.log('Lat:'+lat+' Long:'+longi);
}
val() 函数用于设置和获取输入类型元素的值。
在设置值时您使用的是 val(),但在获取它们的值时您使用的是 .value,我认为这不会给您带来任何结果,也可能不会在您的控制台中出现错误。
因此将其更改为:
var lat = document.getElementById("pokemon_lat").val();
var longi = document.getElementById("pokemon_long").val();
查看此内容以更好地解释如何以及何时使用 .val() 以及何时使用 .value -> Get the value in an input text box
我希望这会奏效。
听起来 initialize
根本不是 运行。也许脚本正在加载(或已经在缓存中)并且 运行ning 在 initialize
设置之前。您可以尝试将 initialize
移动到 jQuery 就绪事件之前。
初始警告:自 [=30=] 50 起,地理位置 API 也是 disabled unless you are on an encrypted connection (https://) which means this will not work at all on an insecure localhost or any other insecure (http://) server. Firefox is also pondering implementing。
您的 initialize
函数可能在接受地理位置 API returns 值 and/or 之前被调用。尝试使用 promise/jQuery 延迟(因为您的代码表明您正在使用 jQuery)来指示 API 何时完成或失败:
var startPos, positionPromise = $.Deferred();
navigator.geolocation.getCurrentPosition(function(position) {
startPos = position;
$('#pokemon_lat').val(startPos.coords.latitude);
$('#pokemon_long').val(startPos.coords.longitude);
// Huston, we have the location!
positionPromise.resolve();
}, function(error) {
alert('Error occurred. Error code: ' + error.code + '');
// error.code can be:
// 0: unknown error
// 1: permission denied
// 2: position unavailable (error response from locaton provider)
// 3: timed out
// Danger, Will Robinson! Danger!
positionPromise.reject();
});
window["initialize"] = function() {
var map;
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
mapTypeId: 'roadmap'
};
// Display a map on the page
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
map.setTilt(45);
// Multiple Markers LatLong
$.when(positionPromise).then(function(){
var lat = document.getElementById("pokemon_lat").value;
var longi = document.getElementById("pokemon_long").value;
console.log('Lat:'+lat+' Long:'+longi);
}, function(){
console.log("Could not get latitude and longitude )-:");
}
);
}
$(function($) {
// Asynchronously Load the map API
var script = document.createElement('script');
script.src = "//maps.googleapis.com/maps/api/js?key=shcschds&sensor=true&callback=initialize";
document.body.appendChild(script);
});
更新:
更新了代码并开始工作 JSFiddle。由于某种原因,initialize
函数未在全局范围内设置(可能是通过外部函数添加的)。为确保 initialize
在全局范围内,您使用 window["initialize"]
.
我有这个检测经度和纬度的代码,它成功地输入了但我无法检索输入值,请帮我找出问题所在。我试了jquery,也找不回来
这是我的代码:-
var startPos;
navigator.geolocation.getCurrentPosition(function(position) {
startPos = position;
$('#pokemon_lat').val(startPos.coords.latitude);
$('#pokemon_long').val(startPos.coords.longitude);
}, function(error) {
alert('Error occurred. Error code: ' + error.code + '');
// error.code can be:
// 0: unknown error
// 1: permission denied
// 2: position unavailable (error response from locaton provider)
// 3: timed out
});
$(function($) {
// Asynchronously Load the map API
var script = document.createElement('script');
script.src = "//maps.googleapis.com/maps/api/js?key=shcschds&sensor=true&callback=initialize";
document.body.appendChild(script);
});
function initialize() {
var map;
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
mapTypeId: 'roadmap'
};
// Display a map on the page
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
map.setTilt(45);
// Multiple Markers LatLong
var lat = document.getElementById("pokemon_lat").value;
var longi = document.getElementById("pokemon_long").value;
console.log('Lat:'+lat+' Long:'+longi);
}
val() 函数用于设置和获取输入类型元素的值。
在设置值时您使用的是 val(),但在获取它们的值时您使用的是 .value,我认为这不会给您带来任何结果,也可能不会在您的控制台中出现错误。
因此将其更改为:
var lat = document.getElementById("pokemon_lat").val();
var longi = document.getElementById("pokemon_long").val();
查看此内容以更好地解释如何以及何时使用 .val() 以及何时使用 .value -> Get the value in an input text box
我希望这会奏效。
听起来 initialize
根本不是 运行。也许脚本正在加载(或已经在缓存中)并且 运行ning 在 initialize
设置之前。您可以尝试将 initialize
移动到 jQuery 就绪事件之前。
初始警告:自 [=30=] 50 起,地理位置 API 也是 disabled unless you are on an encrypted connection (https://) which means this will not work at all on an insecure localhost or any other insecure (http://) server. Firefox is also pondering implementing。
您的 initialize
函数可能在接受地理位置 API returns 值 and/or 之前被调用。尝试使用 promise/jQuery 延迟(因为您的代码表明您正在使用 jQuery)来指示 API 何时完成或失败:
var startPos, positionPromise = $.Deferred();
navigator.geolocation.getCurrentPosition(function(position) {
startPos = position;
$('#pokemon_lat').val(startPos.coords.latitude);
$('#pokemon_long').val(startPos.coords.longitude);
// Huston, we have the location!
positionPromise.resolve();
}, function(error) {
alert('Error occurred. Error code: ' + error.code + '');
// error.code can be:
// 0: unknown error
// 1: permission denied
// 2: position unavailable (error response from locaton provider)
// 3: timed out
// Danger, Will Robinson! Danger!
positionPromise.reject();
});
window["initialize"] = function() {
var map;
var bounds = new google.maps.LatLngBounds();
var mapOptions = {
mapTypeId: 'roadmap'
};
// Display a map on the page
map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
map.setTilt(45);
// Multiple Markers LatLong
$.when(positionPromise).then(function(){
var lat = document.getElementById("pokemon_lat").value;
var longi = document.getElementById("pokemon_long").value;
console.log('Lat:'+lat+' Long:'+longi);
}, function(){
console.log("Could not get latitude and longitude )-:");
}
);
}
$(function($) {
// Asynchronously Load the map API
var script = document.createElement('script');
script.src = "//maps.googleapis.com/maps/api/js?key=shcschds&sensor=true&callback=initialize";
document.body.appendChild(script);
});
更新:
更新了代码并开始工作 JSFiddle。由于某种原因,initialize
函数未在全局范围内设置(可能是通过外部函数添加的)。为确保 initialize
在全局范围内,您使用 window["initialize"]
.