什么是错误的我的逻辑提取表单元格的内部文本

What is wrong with my logic for extracting the inner text of table cells?

本文关键字:单元格 表单 内部 文本 提取 错误 我的 什么      更新时间:2023-09-26

我试图使一个过程的工作原理如下:

<tbody id="slide-table-body">
   <tr>
        <td>
             pic1.jpg
        </td>
        <td>
             pic2.jpg
        </td>
   </tr>
   <tr>
        <td>
             pic3.jpg
        </td>
        <td>
             pic4.jpg
        </td>
   </tr>
   <tr>
        <td>
             pic5.jpg
        </td>
        <td>
             pic6.jpg
        </td>
   </tr>
</tbody>

------------------------------------->

[ { assetPreviewUrl: "pic1.jpg", assetUrl: "pic2.jpg" }, 
  { assetPreviewUrl: "pic3.jpg", assetUrl: "pic4.jpg" }, 
  { assetPreviewUrl: "pic5.jpg", assetUrl: "pic6.jpg" } ]

我可以用更严格的术语来描述,但我认为你明白了:基本上,它解析单元格的内部文本并将结果存储为JSON。

我运行这个过程的函数如下,它不起作用。

parseSlides = function ( )
{
    var slidesArr = [];
    $('#slide-table-body').children().each(function() { // each row
        slidesArr.push(
            {
               assetPreviewUrl : $(this).first().text(), // first cell's text 
               assetUrl        : $(this).last().text() // second/last cell's text
            }
        );           
    });
    return slidesArr; 
}

输出像

[ { assetPreviewUrl: "pic1.jpgpic2.jpg", assetUrl: "pic1.jpgpic2.jpg" }, 
  { assetPreviewUrl: "pic3.jpgpic4.jpg", assetUrl: "pic3.jpgpic4.jpg" }, 
  { assetPreviewUrl: "pic5.jpgpic6.jpg", assetUrl: "pic5.jpgpic6.jpg" } ]

我做错了什么?

编辑:谢谢你的回答。我将随机选择谁作为最佳答案:

var answerers = [ "BG101", "Skylord123", "Igor" ];
console.log(answerers[Math.floor(Math.random() * answerers.length)]); // printed "Skylord123"

不使用first()last()的JQuery函数,而是使用children('td:first')children('td:last')

当你在this上运行first()时,你正在抓取列表中的第一个项目,在这种情况下是this。你没有得到第一个子元素。使用children()函数和选择器将从this中获取子元素。

我测试了这个,它工作。所以修改你的代码为:

parseSlides = function ( )
{
    var slidesArr = [];
    $('#slide-table-body').children().each(function() { // each row
        slidesArr.push(
            {
               assetPreviewUrl : $(this).children('td:first').text(), // first cell's text 
               assetUrl        : $(this).children('td:last').text() // second/last cell's text
            }
        );           
    });
    return slidesArr; 
}

jQuery。first -将匹配的元素集合缩减为集合中的第一个元素。

获取第一个子元素。

对于$(this).first().text()$(this).last().text(),您两次都得到行innerText

试试这个:-

parseSlides = function ( )
{
    var slidesArr = [];
    $('#slide-table-body').children().each(function() { // each row
        slidesArr.push(
            {
               assetPreviewUrl : $(this).children().first().text(), // first cell's text 
               assetUrl        : $(this).children().last().text() // second/last cell's text
            }
        );           
    });
    return slidesArr; 
}