这个HTML代码
<span>192.110.160.11</span><br>
<span>177.67.82.22</span><br>
<span>36.75.102.33</span><br>
我的js
document.body.innerHTML = document.body.innerHTML.replace(new RegExp("<span>(.*?)</span>", "g"),"<span id='ip'>$1</span> - <span id='country'>wait..</span>");
var ip = document.getElementById("ip").innerHTML;
$.get("http://ipinfo.io/"+ip, function (response) {
$("#country").html(response.country);
}, "jsonp");
结果我的js,http://jsfiddle.net/p26uE
192.110.160.11 - US
177.67.82.22 - wait..
36.75.102.33 - wait..
我想要结果
192.110.160.11 - US
177.67.82.22 - BR
36.75.102.33 - ID
感谢所有能帮助我的人:D
答案 0 :(得分:8)
$("span").each(function(i){
var self = this;
var ip = $(this).text();
$.get("http://ipinfo.io/"+ip, function (response) {
$(self).html(ip+"-"+response.country);
}, "jsonp");
});
检查
答案 1 :(得分:1)
document.body.innerHTML = document.body.innerHTML.replace(new RegExp("<span>(.*?)</span>", "g"), "<div><span class='ip'>$1</span> - <span class='country'>wait..</span></div>");
$('.ip').each(function () {
var $this = $(this);
$.get("http://ipinfo.io/" + $(this).text(), function (response) {
$this.closest('div').find('.country').html(response.country);
}, "jsonp");
});
<小时/> ID必须是唯一的
你应该上课。
阅读Two HTML elements with same id attribute: How bad is it really?
答案 2 :(得分:1)
document.body.innerHTML = document.body.innerHTML.replace(new RegExp("<span>(.*?)</span>", "g"),"<span class='country'>$1</span> - <span class='ip'>wait..</span>");
var ips = document.getElementsByClassName("country");
Array.prototype.forEach.call(ips, function(elem) {
var ipaddress = elem.innerHTML;
$.get("http://ipinfo.io/"+ipaddress, function (response) {
$(elem).next().html(response.country);
}, "jsonp");
});
答案 3 :(得分:0)
您为每个范围指定了相同的ID,因此只有在您选择它时才会返回第一个范围。尝试这样的事情,因为你已经在使用jQuery:
$('span').each(function (ele) {
var currEle = $(this);
var ip = currEle.text();
$.get("http://ipinfo.io/" + ip, function (response) {
currEle.text(ip + " - " + response.country);
}, "jsonp");
});
希望这有帮助
答案 4 :(得分:0)
你可以循环播放它们。我稍微更改了设置,以便更容易循环,但您应该能够推断出需要更改的内容。
工作 JSFiddle
HTML: 把它放在容器ul / li中只是因为它们很容易列出
<ul id="ipList" style="list-style:none;">
<li><span class="ipAddr">192.110.160.11</span><span class="ipProg">Wait...</span></li>
<li><span class="ipAddr">177.67.82.22</span><span class="ipProg">Wait...</span></li>
<li><span class="ipAddr">36.75.102.33</span><span class="ipProg">Wait...</span></li>
</ul>
CSS:
.ipProg{
margin-left: 10px;
}
JS:
$(function(){
$("#ipList").children('li').each(function(){
var ip = $(this).children('.ipAddr').first();
var reg = $(this).children('.ipProg').first();
$.get("http://ipinfo.io/"+ip.text(), function (response) {
reg.text(response.country);
}, "jsonp");
});
});