我试图从一群人手里抢到三根棍子.标签:解释我哪里做错了

My attempt to grab the hrefs from a bunch of <a> tags: Explain where I'm going wrong

本文关键字:标签 三根 错了 解释 一群人      更新时间:2023-09-26

来自tbody元素

<tbody id="results">
   <tr>
      <td><input type="checkbox"><a href="/../../Assets/Microsoft-Azure-roman_column.png">/../../Assets/Microsoft-Azure-roman_column.png</a></td>
      <td>Microsoft</td>
      <td>Azure</td>
      <td>roman_column.png</td>
   </tr>
   <tr>
      <td><input type="checkbox"><a href="/../../Assets/Microsoft-Azure-runphp.cmd">/../../Assets/Microsoft-Azure-runphp.cmd</a></td>
      <td>Microsoft</td>
      <td>Azure</td>
      <td>runphp.cmd</td>
   </tr>
   <tr>
      <td><input type="checkbox"><a href="/../../Assets/Microsoft-Azure-runphp.cmd">/../../Assets/Microsoft-Azure-runphp.cmd</a></td>
      <td>Microsoft</td>
      <td>Azure</td>
      <td>runphp.cmd</td>
   </tr>
   <tr>
      <td><input type="checkbox"><a href="/../../Assets/Microsoft-Azure-Picture1.png">/../../Assets/Microsoft-Azure-Picture1.png</a></td>
      <td>Microsoft</td>
      <td>Azure</td>
      <td>Picture1.png</td>
   </tr>
   <tr>
      <td><input type="checkbox"><a href="/../../Assets/Microsoft-Azure-vertical-align-scrnsht.png">/../../Assets/Microsoft-Azure-vertical-align-scrnsht.png</a></td>
      <td>Microsoft</td>
      <td>Azure</td>
      <td>vertical-align-scrnsht.png</td>
   </tr>
   <tr>
      <td><input type="checkbox"><a href="/../../Assets/Microsoft-Azure-vertical-align-scrnsht.png">/../../Assets/Microsoft-Azure-vertical-align-scrnsht.png</a></td>
      <td>Microsoft</td>
      <td>Azure</td>
      <td>vertical-align-scrnsht.png</td>
   </tr>
</tbody>

我的过程试图抓取href s并将它们粘贴到一个名为links的数组中:

        var resultRows = $('#results > tr > td > a');
        for (var thisAnchor in resultRows) links.push($(this).attr('href'));
        for (var thisLink in links) console.log(thisLink); // test

但是这个测试正在记录

0
1
.
.
.
171
172

到控制台,而不是预期的

/../../Assets/Microsoft-Azure-roman_column.png
/../../Assets/Microsoft-Azure-runphp.cmd
/../../Assets/Microsoft-Azure-runphp.cmd
/../../Assets/Microsoft-Azure-Picture1.png
/../../Assets/Microsoft-Azure-vertical-align-scrnsht.png
/../../Assets/Microsoft-Azure-vertical-align-scrnsht.png

这是为什么,我如何解决它?

您可以使用jQuery .each,像这样:

$('tr').each(function() {
var href = $(this).find('a').attr('href');
links.push(href);
console.log(href);
});

首先,您的HTML无效。您有一个未关闭的input标签。

接下来你的tbody需要被table标签包裹

然后,如果您正在寻找hrefs的数组,您应该使用jQquery。地图功能。

下面是一个工作示例:https://jsfiddle.net/p6h7o32m/

首先,您的选择器没有生成任何元素,因此更改为

$('#results [href]')
第二,使用.each代替for循环
$('#results [href]').each(function(){
    links.push($(this).attr('href'));
});
最后,修改
for (var thisLink in links) console.log(thisLink);

for (var thisLink in links) console.log(links[thisLink]);

当你在javascript中迭代foreach循环时,比如

for(var key in collection)

key,在这里是实际的键或索引因为数组