我在 JS 中做错了什么?我需要每个元素的一个坐标,但不是全部

what am I doing wrong in JS? i need one coord to each element but not all

本文关键字:一个 坐标 全部 元素 什么 错了 我在 JS      更新时间:2023-09-26

ajax 和 xml 解析器

$.ajax({
    url: 'http://geocode-maps.yandex.ru/1.x/?geocode=43.2491,76.9198&sco=latlong&kind=house&results=7',//here get the XML wirh all adresses and coords
    type: 'GET',
    dataType: 'html',
    success: function(d){
        $("#message").html('');
        var coord = $(d).find('pos').text();
        $(d).find('name').each(function(){
            $('#message').prepend("<div class='addresses' onClick='insert_adress($(this).text());'>"+$(this).text()+" и "+coord+"</div>"); //here it write to a box                
        })
    }
});

这是示例 OJ JSSFIDLE

请尝试此 http://jsfiddle.net/cHJ6S/3/

...
            $(d).find('GeoObject').each(function () {
              var coord = $(this).find('pos').text();
              var name =  $(this).find('name').text();
              $('#message').prepend("<div class='addresses' onClick='insert_adress($(this).text());'>"+name+" и "+coord+"</div>"); 
            });
...

这是你想要的结果吗?

улица Муратбаева, 183 и 76.918695 43.249010
улица Муратбаева, 185 и 76.919100 43.248557
улица Муратбаева, 168 и 76.919692 43.248426
улица Карасай батыра, 108 и 76.920294 43.249496
улица Шагабутдинова, 103а и 76.920375 43.248991
улица Муратбаева, 166 и 76.919989 43.248761
улица Муратбаева, 164 и 76.919684 43.249214

我可以建议你使用 php 将 xml 转换为 json,然后将其发送到 js。

如果您已检查控制台,则会看到以下错误

未捕获的类型错误: 对象 76.919800 43.24910076.919684

43.24921476.919989 43.24876176.920375 43.24899176.920294 43.24949676.919692 43.24842676.919100 43.24855776.918695 43.249010没有方法"下一步"

此行是问题的原因。

var coord = $(d).find('pos').text().next();  //remove next will fix it

JSFiddle 中检查这一点

仅供参考:按 F12,检查控制台是否有任何错误。

而不是$(d).find('name'),

使用$(d).find('featuremember').each(function(){...}),

功能成员 - 表示对象,那么为什么不循环访问对象

然后使用内部循环

var pos = $($(this).find('pos')).text();
var name = $($(this).find('name')).text();

最后

$('someId').prepend(name + ' pos: ' + pos);

试试这个,

var coord = $(d).find('pos').text();

完整代码

$.ajax({
    url: 'http://geocode-maps.yandex.ru/1.x/?geocode=43.2491,76.9198&sco=latlong&kind=house&results=7',
    type: 'GET',
    dataType: 'html',
    success: function(d){
        $("#message").html('');
        var coord = $(d).find('pos').text();// pos text not its next element's text
        $(d).find('name').each(function(){
            $('#message').prepend("<div class='addresses' onClick='insert_adress($(this).text());'>"+$(this).text()+" и "+coord+"</div>");                 
        });
    }
});

小提琴