jQuery加载函数里面的jQuery加载函数

时间:2018-05-09 15:28:35

标签: javascript jquery

所以我试图通过JavaScript和jQuery解析来自另一个网站的大量数据(我是两者都是新手),所以这里的问题是第二个jQuery load()内的函数不起作用

function load() {

 var r = 0;
 var cols = [4,5,8,9,10];
 $('#Parser').load('url #tableID', function () {
   var r = $('#Parser').find('label').length;

   for (var i = 0; i < r; i++) {
     $('#table').append('<tr id="'+i+'"></tr>')

     for (var j = 0; j < cols.length; j++) {
       $('#'+i).append('<td id="c'+i+j+'"></td>')
       $('#c'+i+j).load('url #tableId\\:Row'+i+'\\:Col'+cols[j], function() {
         $('#c'+i+j).html($('#c'+i+j).children().text());
       });
     }
   }
   $('#Parser').html('');
 });
}

因此,如果使用静态ID自行测试它并且它可以正常工作

$('#test').load('url #tableId\\:Row1\\:Col1', function() {
   $('#test').html($('#test').children().text());
});

我需要像这样按列和行解析代码,因为我从中获取数据的网页包含了我想要分散在cols变量上的列的数据,我发现有多少行表格包含r变量

我不知道这是一个逻辑问题还是仅仅是对功能的滥用,但我一整天都在苦苦挣扎,我需要帮助。

页面启动时调用主load()函数,这将输出整个元素而不是文本

var time =new Date().getTime();
var rc = 0;
load();
refresh();

function load() {
var r = 0;
var cols = [4,5,8,9,10];

$('#Parser').load('url #tableID', function () {
  var r = $('#Parser').find('label').length;
  if (r != 0) {
    //Simulating going back to this page
    $('body').css({'background-color':'red','color':'white'});
    for (var i = 0; i < r; i++) {
      if (rc < r) {
        $('#table').append('<tr id="'+i+'"></tr>')
      }
      for (var j = 0; j < cols.length; j++) {
        if (rc < r) {
          $('#'+i).append('<td id="c'+i+j+'"></td>')
        }
        col =  $('#c'+i+j).load('url #tableId\\:Row'+i+'\\:Col'+cols[j],function() {
          if ($('#c'+i+j).html != col){
            $('#c'+i+j).html('');
          }
        });

      }
    }
  }else {
    if (rc != 0 ) {
      for (var i = 0; i < rc; i++) {
        for (var j = 0; j < cols.length ; j++) {
          $('#c'+i+j).html('');
        }
      }
    }
    if ($('body').css('background-color') != 'white') {
      //Simulating another page
      $('body').css({'background-color':'white','color':'black'});
    }
  }
  $('#Parser').html('');
  if (rc < r) {
    rc = r ;
  }
});
}
function refresh() {
 if(new Date().getTime() - time >= 10000){
  load();
  setTimeout(refresh, 10000);
}else{
  setTimeout(refresh, 10000);
}
}

这是我在页面上的完整javascript 以前的代码是我尝试以更简单的方式处理文本

2 个答案:

答案 0 :(得分:1)

试试这个:

function load()
{
    ...your code...
}

$(document).ready(load);

可能没有按时调用该函数,请确保在DOM呈现之后调用它。

答案 1 :(得分:0)

好的,这是一个非常简单的修复,在我已经替换的第二个加载功能中 在

$('#c'+i+j).html($('#c'+i+j).children().text());

$(this).html($(this).text());

现在它运作良好。