如何调用变量外部函数。还有Jquery吗?

时间:2014-06-06 06:56:55

标签: javascript jquery

我希望能够在函数外部访问嵌套的each()函数的值。

我的代码如下或http://jsfiddle.net/z36UK/6/

HTML:

<div id="wrap">
  <ul data-role="listview" data-filter="true" data-filter-placeholder="Search..." id="ds-canho"> 
  </ul>
</div>

使用Javascript:

$(document).ready(function() {
  var urlx=[];  
  parseXml();
  alert(urlx);
  console.log(urlx);

  $.mobile.loading( "show" );
  $.ajax({
    type: "GET",
    url: 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%27http://saigonpearl.info/home/notype/-0-trang-chu.html%27%20and%20xpath%3D%22%2F%2Fdiv%5B%40class%3D%27tindang%27%5D%22&diagnostics=true',
    dataType: "xml",
    success: parseXml
  });


  function parseXml(xml) {
    $(xml).find("div.tindang").each(function() {

      var url = $(this).find('a').attr("href"),
      urlx= url.replace('#menutop','');
      $("ul#ds-canho").append('<li>' + $(this).find('h3').text() + '</li>');
      $('ul#ds-canho').listview('refresh');
      $.mobile.loading( "hide" );
    });
  }

});

2 个答案:

答案 0 :(得分:0)

这不是关于each,是吗?您可以轻松地将urlx变量放在那里并从内部分配给它:

function parseXml(xml) {
    var urlx;
    $(xml).find("div.tindang").each(function() {
        var url = $(this).find('a').attr("href"),
        urlx = url.replace('#menutop','');
        $("ul#ds-canho").append('<li>' + $(this).find('h3').text() + '</li>');
        $('ul#ds-canho').listview('refresh');
        $.mobile.loading( "hide" );
    });
    console.log(urlx);
    // if you wanted an array, use `urlx = [];` and `urlx.push(…);`
}

但是,您当前放置了日志和警报语句的位置是

  • 在ajax请求之前
  • 在ajax请求回调之外

这意味着它无法正常工作。您需要将它们放在回调中,因为cannot return the data outside of it

答案 1 :(得分:0)

请更新以下js代码

$(document).ready(function() {                   
  $.mobile.loading( "show" );
  $.ajax({
    type: "GET",
    url: 'https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20html%20where%20url%3D%27http://saigonpearl.info/home/notype/-0-trang-chu.html%27%20and%20xpath%3D%22%2F%2Fdiv%5B%40class%3D%27tindang%27%5D%22&diagnostics=true',
    dataType: "xml",
    success: parseXml
  });
  $( document ).ajaxComplete(function() {
    parseXml();
  });
  function parseXml(xml) {
    window.urlx = '';
    $(xml).find("div.tindang").each(function() {

      var url = $(this).find('a').attr("href"),
          urlx = url.replace('#menutop','');

      $("ul#ds-canho").append('<li>' + $(this).find('h3').text() + '</li>');
      $('ul#ds-canho').listview('refresh');
      $.mobile.loading( "hide" );
    });
  }
});

修改

添加FSFIDDLE