【问题标题】:jQuery array object getting valuejQuery数组对象获取值
【发布时间】:2014-11-04 20:03:52
【问题描述】:

大家好,我有以下代码:

var items = [];
$(xml).find("Placemark").each(function () {
    var tmp_latLng = $(this).find("coordinates").text();

    tmp_latLng = tmp_latLng.split(",");

    items.push({
        name: $(this).find("name").text(),
        snippet: $(this).find("Snippet").text(),
        description: $(this).find("description").text(),
        lat: tmp_latLng[0],
        lng: tmp_latLng[1],
        distance: $(this).find("distance").text()
    });
});

var markerNodes = items;

if (markerNodes.length > 0) {
     howManyMarkers = markerNodes.length;

     for (var i = 0; i < markerNodes.length; i++) {
         console.log(markerNodes[i].Snippet);

         var name = markerNodes[i].getAttribute("Snippet");
         var address = markerNodes[i].getAttribute("Snippet");
         var description = markerNodes[i].getAttribute("description");
         var distance = parseFloat(markerNodes[i].getAttribute("distance"));
         var latlng = new google.maps.LatLng(parseFloat(markerNodes[i].getAttribute("lat")), parseFloat(markerNodes[i].getAttribute("lng")));

         createOption(name, distance, i);
         createMarker(latlng, name, address);
         bounds.extend(latlng);
     }

     map.fitBounds(bounds);
} else {
     alert('Sorry, there are no stores that close to your location. Try expanding your search radius.');
}

错误出现在 console.log(markerNodes[i].Snippet); 上。错误是Uncaught TypeError: undefined is not a function

ma​​rkerNodes[i].getAttribute("Snippet") 也有 Uncaught TypeError: undefined is not a function

的错误

我会错过什么?

【问题讨论】:

    标签: javascript jquery arrays xml parsing


    【解决方案1】:

    JavaScript 区分大小写。属性sn-p为小写,使用

    console.log(markerNodes[i].snippet);
    

    【讨论】:

    • 还有第二个未定义的问题?
    • 完全一样的原因。
    • markerNodes[i].getAttribute("Snippet")和sn-p的拼写有什么关系? getAttribute() 是什么?
    • 您不能使用getAttribute。该函数用于获取 HTML DOM 对象的属性值。 markerNodes[0] 不是 HTML DOM 对象。
    【解决方案2】:

    应该是

    markerNodes[i].snippet
    

    (注意大小写)

    【讨论】:

    • markerNodes[i].snippetmarkerNodes[i]["snippet"]在功能上没有区别。
    【解决方案3】:

    Javascript 中的标识符区分大小写,所以应该是snippet,而不是Snippet

    console.log(markerNodes[i].snippet);
    

    getAttribute method 用于元素,而不是对象。只需将属性作为对象的成员访问:

    var name = markerNodes[i].snippet;
    var address = markerNodes[i].snippet;
    var description = markerNodes[i].description;
    var distance = parseFloat(markerNodes[i].distance);
    var latlng = new google.maps.LatLng(parseFloat(markerNodes[i].lat), parseFloat(markerNodes[i].lng));
    

    注意:也许您想从name 属性而不是snippet 属性中获取name 变量的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 2011-06-10
      • 1970-01-01
      • 2017-03-23
      • 1970-01-01
      • 2018-06-14
      • 2013-09-07
      相关资源
      最近更新 更多