为什么JavaScript数组返回“未定义”?

时间:2015-10-01 17:02:39

标签: javascript jquery-mobile

我一直在jQuery和html 5中构建一个应用程序来读取博客的RSS源代码。我想显示rss的标题列表,当用户点击标题时,它会转到显示完整内容的不同页面。我可以使用ajax获取内容并将它们存储在数组中。但是当我点击标题时,它会在下一页显示未定义。我正在使用jQuery页面。

$(document).ready(function() {
  load_posts();
});

function load_posts() {
  var PAGINATION = $('#pagination');
  var HTML1 = '<li><a href="#post" data-transition="slide" id ="';
  var HTML5 = '"><h4>';
  var HTML2 = '</h4>';
  var HTML3 = '<p>';
  var HTML4 = '</p></a></li>';
  var btn = "";
  var selector = "";
  var i = 0;
  var title = "";
  var pubDate = "";
  var dascription = "";
  var anchorID = "";
  var url = "";
  var fullPost = new Array;
  var link = new Array;
  $.ajax({
    type: 'GET',
    url: 'http://smushbits.com/feed/',
    dataType: 'xml',
    error: function() {
      alert("An error occured!");
    },
    success: function(xml) {
      $(xml).find('item').each(function() {
        title = $(this).find('title').text();
        pubDate = $(this).find('pubDate').text();
        pubDate = pubDate.substring(5, 16);
        description = $(this).find('encoded').text();
        url = $(this).find('link').text();
        fullPost.push(description);
        link.push(url);
        anchorID = "btn" + i.toString();
        $(HTML1 + anchorID + HTML5 + title + HTML2 + HTML3 + pubDate + HTML4).appendTo(PAGINATION);
        i = i + 1;
      });

      for (var j = 0; j < fullPost.length; j++) {
        btn = "#btn" + j.toString();
        selector = $(btn);
        $(document).on("click", selector, function() {
          document.getElementById('entry').innerHTML = fullPost[j];
        });
      }
      PAGINATION.listview("refresh");
    }
  });
}

1 个答案:

答案 0 :(得分:1)

臭名昭着的循环问题。

for (var j = 0; j < fullPost.length; j++) {
    (function(j) {
      var btn = "#btn" + j;
      $(document).on("click", btn, function() {
          document.getElementById('entry').innerHTML = fullPost[j];
      });
    }(j));
}