Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 尝试使用jQuery从表中提取数据_Javascript_Jquery - Fatal编程技术网

Javascript 尝试使用jQuery从表中提取数据

Javascript 尝试使用jQuery从表中提取数据,javascript,jquery,Javascript,Jquery,为了说明这个问题的背景,我正在尝试从一个使用表格制作的html网站中提取数据。我已经设法拔出了大部分,但只有一件事困扰着我的大脑。也许我需要休息一下 我把所有的代码都放在一个小提琴里,可以在这里找到 基本上,我是想把文章的日期和作者从那个特殊的地方拉出来。因此,我循环遍历其中的元素,并使用某些关键字获取包含日期和作者的元素。使用font:n子项是不可能的,因为并非每个页面中的所有标记计数都不相同。(您可以在jsfiddle表中看到两个空的,这是一个错误) 对于日期,我制作了一个月名数组,很容易完

为了说明这个问题的背景,我正在尝试从一个使用表格制作的html网站中提取数据。我已经设法拔出了大部分,但只有一件事困扰着我的大脑。也许我需要休息一下

我把所有的代码都放在一个小提琴里,可以在这里找到

基本上,我是想把文章的日期和作者从那个特殊的地方拉出来。因此,我循环遍历其中的元素,并使用某些关键字获取包含日期和作者的元素。使用font:n子项是不可能的,因为并非每个页面中的所有标记计数都不相同。(您可以在jsfiddle表中看到两个空的,这是一个错误)

对于日期,我制作了一个月名数组,很容易完成

对于作者来说,我正在检测该元素文本的第一个单词“By”,它也在发挥作用

然而,我面临的问题是,当我在“.each”函数之外使用该元素时,该函数返回的值为“undefined”。下面是我正在使用的jQuery代码

function monthNames(string, keywords) {
    return string.split(/\b/).some(Array.prototype.includes.bind(keywords));
}

var months = ["Jan.", "Feb.", "March", "April", "May", "June", "July", "Aug.", "Sept.", "Oct.", "Nov.", "Dec."];

jQuery('td').find('font').each(function() {
  var curtext = jQuery(this).text();
  var has_date  = monthNames(curtext, months);
  if (has_date == true) {
    var post_date = curtext;
    jQuery('#current-date-text').html(post_date);
  }
});

jQuery('#current-outside-date').html(post_date);

jQuery('td').find('font').each(function() {
  var curtext = jQuery(this).text();
  var i = curtext.indexOf(' ');
  var first_word = curtext.substring(0, i);
  if (first_word == 'By') {
    var author = curtext;
    var author = author.substr(author.indexOf(" ") + 1);
    jQuery('#current-author-text').html(author);
  }
});

jQuery('#current-outside-author').html(author);

任何帮助都将不胜感激

您需要在函数之外定义变量(您有两个循环,第二个循环试图引用在其范围之外定义的变量)。在这里,我组合了两个循环,删除了许多
var
——只需定义一次,然后就可以引用实际变量

最后,jQuery无法找到
('td')
,除非它实际上位于
标记中。我没有你引用的函数,所以我加入了一个forEach循环,在这个月进行测试

jQuery(文档).ready(函数(){
var月数=[“1月”、“2月”、“3月”、“4月”、“5月”、“6月”、“7月”、“8月”、“9月”、“10月”、“11月”、“12月];
var post_date,作者,curtext,has_date,first_单词
jQuery('td font')。每个(函数(){
curtext=jQuery(this.text();
has_date=false
curtext.split(“”).forEach(w=>{
如果(包括(w)个月)的日期为true;
})
如果(有日期){
发布日期=短文本;
jQuery(“#当前日期文本”).html(发布日期);
}
jQuery(“#当前外部日期”).html(发布日期);
curtext=jQuery(this.text();
var i=短文本索引(“”);
第一个单词=curtext.substring(0,i);
如果(第一个单词=='By'){
作者=curtext;
author=author.substr(author.indexOf(“”+1);
jQuery(“#当前作者文本”).html(作者);
}
});
jQuery(“#当前外部作者”).html(作者);
})

这里有一些文字
这里又是一些随机文本
二○○一年七月十六日
按作者姓名


全局声明变量,即:在每个循环之外。