javascript将id值放入变量中

javascript将id值放入变量中,javascript,jquery,html,json,Javascript,Jquery,Html,Json,我使用api获取了一些访问我页面的人的信息。数据以JSON格式返回,我使用.html函数将内容设置为一些ID,如下所示: $.getJSON("http://ip-api.com/json/?callback=?", function (data) { $("#lat").html(data.lat); $("#lon").html(data.lon); }); 使用: <p id="lat"></p> <p id="lon"></p

我使用api获取了一些访问我页面的人的信息。数据以JSON格式返回,我使用.html函数将内容设置为一些ID,如下所示:

$.getJSON("http://ip-api.com/json/?callback=?", function (data) {
    $("#lat").html(data.lat);
    $("#lon").html(data.lon);
});
使用:

<p id="lat"></p> 
<p id="lon"></p>

在我的html正文中,我可以看到数据已经设置并打印在我的浏览器中

我的问题是如何检索从IDs打印到另一个单独变量中的数据,以继续使用/传递到其他函数?我尝试过使用不同的函数,如
getElementById()
等,但都没有成功。

您可以使用它来获取元素的内容

例如:

var someHtml = "<p>Hello world!</p>";

$(someElement).html(someHtml); 
// This will set the html to be "<p>Hello world!</p>"

alert( $(someElement).html() );
// This will return "<p>Hello world!</p>" in the alert box!
然后可以使用
coords.lat
coords.lon

这么说吧! 实际上没有理由根据HTML元素的值设置
coords
变量。即使必须显示它们,也最好直接从API响应保存变量,以节省一些毫秒

所以你可以这样做:

var coords = {};
$.getJSON("http://ip-api.com/json/?callback=?", function (data) {
    $("#lat").html(data.lat);
    $("#lon").html(data.lon);
    coords = { 'lat' : data.lat, 'lon' : data.lon };
});
编辑: 根据您的-您的错误来自两个地方:

1.您试图在渲染
#map
div之前影响它 首先,将所有脚本移动到HTML下方的,这样您的
就在
旁边

第22-27行变成:

<table id="GeoResults"></table>

<p id="lat"></p>
<p id="lon"></p>

<div id="map"></div>
所以这显然是行不通的——只需移动这些线,直到定义了
纬度
之后,你就成了黄金

可以使用获取元素的内容

例如:

var someHtml = "<p>Hello world!</p>";

$(someElement).html(someHtml); 
// This will set the html to be "<p>Hello world!</p>"

alert( $(someElement).html() );
// This will return "<p>Hello world!</p>" in the alert box!
然后可以使用
coords.lat
coords.lon

这么说吧! 实际上没有理由根据HTML元素的值设置
coords
变量。即使必须显示它们,也最好直接从API响应保存变量,以节省一些毫秒

所以你可以这样做:

var coords = {};
$.getJSON("http://ip-api.com/json/?callback=?", function (data) {
    $("#lat").html(data.lat);
    $("#lon").html(data.lon);
    coords = { 'lat' : data.lat, 'lon' : data.lon };
});
编辑: 根据您的-您的错误来自两个地方:

1.您试图在渲染
#map
div之前影响它 首先,将所有脚本移动到HTML下方的,这样您的
就在
旁边

第22-27行变成:

<table id="GeoResults"></table>

<p id="lat"></p>
<p id="lon"></p>

<div id="map"></div>
所以这显然是行不通的——只需移动这些线,直到定义了
纬度
之后,你就成了黄金


为什么不直接在变量中存储
data.lat
data.lon
呢?你想通过元素的id来获取元素的html?为什么不直接在变量中存储
data.lat
data.lon
呢?你想通过元素的id来获取元素的html吗?谢谢你的建议,我已经尝试了.html()功能就像你在发布这个问题之前所说的一样,现在又尝试了一次,但不幸的是它不起作用。当尝试使用document.write(coords.lat)或console.log(coords.lat)打印变量时,我得到了一个“未定义”的值。有趣的是,您能为我们创建一个示例吗?还是提供更多的代码?@bf16在确定调用了
getJSON
之后,您使用了
console.log()
?没有理由它应该填充html元素而不保存变量您可能想查看如何调试变量的详细信息。这是我的完整代码:,我基本上需要分别在var city Longitude/latitude字段中传递lon和lat变量谢谢您的建议,我尝试了.html()功能就像你在发布这个问题之前所说的一样,现在又尝试了一次,但不幸的是它不起作用。当尝试使用document.write(coords.lat)或console.log(coords.lat)打印变量时,我得到了一个“未定义”的值。有趣的是,您能为我们创建一个示例吗?还是提供更多的代码?@bf16在确定调用了
getJSON
之后,您使用了
console.log()
?没有理由它应该填充html元素而不保存变量您可能想查看如何调试变量的详细信息。这是我的完整代码:,我基本上需要分别在var city Longitude/latitude字段中传递lon和lat变量