所以我试图通过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 以前的代码是我尝试以更简单的方式处理文本
答案 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());
现在它运作良好。