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