TA的每日心情 | 慵懒 2022-3-8 11:41 |
---|
签到天数: 2 天 [LV.1]初来乍到
荣誉开发者
- 积分
- 1379
|
发表于
2023-6-10 23:18:38
|
显示全部楼层
本帖最后由 cxxjackie 于 2023-6-10 23:23 编辑
你这个代码有好几处错误:首先是选择器写的不好,item_table有3个而你只需要1个,父级太宽泛也容易出现之前说过的父级先于子级插入的情况,此时在父级中获取子级就会是空的;其次是遍历company_name时少写了i,其实库的设计中each每次只会返回1个元素,所以没有必要对其遍历,直接操作即可;最后是jQuery的下标访问返回的是元素节点而非jQuery节点,不能直接find,除非用$()套一下,或者用eq访问。代码修改后如下:
- elmGetter.selector($);
- elmGetter.each('.PDF_box', company_name => {
- console.log(company_name);
- console.log('page is fully loaded');
- console.log('xx');
- var dataList = [];
- var title = company_name.find('div.PDF_title').text();
- var casenumber = company_name.find('div#ahdiv').text();
- var judgedate = company_name.find('tbody tr').eq(1).find('td').eq(1).text();
- var casecontent = company_name.find('div.PDF_pox div').text();
- dataList.push({
- 'title': title,
- 'casenumber': casenumber,
- 'judgedate': judgedate,
- 'casecontent':casecontent
- });
- console.log(dataList);
- });
复制代码 这类不需要获取多次的还可以用get+数组的方式来获取,需要对选择器写法有一定了解:
- elmGetter.selector($);
- elmGetter.get([
- '.PDF_box .PDF_title',
- '.PDF_box #ahdiv',
- '.PDF_box tr:nth-child(2) > td:nth-child(2)',
- '.PDF_box .PDF_pox div',
- ]).then(([title, casenumber, judgedate, casecontent]) => {
- const dataList = {
- 'title': title.text(),
- 'casenumber': casenumber.text(),
- 'judgedate': judgedate.text(),
- 'casecontent':casecontent.text()
- };
- console.log(dataList);
- });
复制代码 调试的话可以用这种方式观察元素插入的情况(最好指定详细的父级以避免元素过多):
- elmGetter.selector('css');
- elmGetter.each('*', document.body, el => {
- console.log(el.cloneNode(true));
- });
复制代码
|
|