Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.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 提取表格单元格内部文本的逻辑有什么问题?_Javascript_Jquery_Json_Algorithm_Dom - Fatal编程技术网

Javascript 提取表格单元格内部文本的逻辑有什么问题?

Javascript 提取表格单元格内部文本的逻辑有什么问题?,javascript,jquery,json,algorithm,dom,Javascript,Jquery,Json,Algorithm,Dom,我正试图制定一个如下所示的程序: <tbody id="slide-table-body"> <tr> <td> pic1.jpg </td> <td> pic2.jpg </td> </tr> <tr> <td>

我正试图制定一个如下所示的程序:

<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>
我可以用更严格的术语来描述,但我想你明白了:基本上,它解析单元格的内部文本,并将结果存储为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"

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; 
}

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

当您在
this
上运行
first()
时,您正在抓取列表中的第一项,在本例中,它是
this
。您没有得到第一个子元素。使用带有选择器的
children()
函数将从
中获取子元素

我测试了这个,它成功了。因此,请将代码修改为:

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; 
}

在这种情况下,对$(this)调用first()将返回列表中的第一个元素,这不是他想要的。他想要第一个和最后一个子元素。@Skylord123-我就是这么说的。啊,我错过了。对不起。:)那么解决方案是什么呢?@epascarello-OP已经知道了
子函数。
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; 
}