我正在尝试从具有Mojolicious的表中删除第一列(通常是第n列)。 我目前这样做:
$table->find('td:first')->each(sub { my ($e) = @_; $e->remove });
但这不起作用。
我做错了什么?
(是的,我知道我在Mojolicious上问了很多问题 - 刚刚开始,这很酷)
答案 0 :(得分:0)
:first
没有CSS Selector。
以下使用:nth-child(1)
隔离第一列,然后隔离removes单元格:
也可以使用:first-child
,:first-of-type
等。请务必查看所有可用的不同选择器,以确保哪些选择器最适合您的目的。
use strict;
use warnings;
use Mojo::DOM;
my $dom = Mojo::DOM->new(do {local $/; <DATA>});
$dom->find('tr > td:nth-child(1)')->remove;
print $dom;
__DATA__
<html>
<head>
<title>Hello Tables</title>
</head>
<body>
<h1>Hello world</h1>
<table>
<tr><td>Row 1 Col 1</td><td>Row 1 Col 2</td><td>Row 1 Col 3</td></tr>
<tr><td>Row 2 Col 1</td><td>Row 2 Col 2</td><td>Row 2 Col 3</td></tr>
<tr><td>Row 3 Col 1</td><td>Row 3 Col 2</td><td>Row 3 Col 3</td></tr>
<tr><td>Row 4 Col 1</td><td>Row 4 Col 2</td><td>Row 4 Col 3</td></tr>
</table>
</body>
</html>
输出:
<html>
<head>
<title>Hello Tables</title>
</head>
<body>
<h1>Hello world</h1>
<table>
<tr><td>Row 1 Col 2</td><td>Row 1 Col 3</td></tr>
<tr><td>Row 2 Col 2</td><td>Row 2 Col 3</td></tr>
<tr><td>Row 3 Col 2</td><td>Row 3 Col 3</td></tr>
<tr><td>Row 4 Col 2</td><td>Row 4 Col 3</td></tr>
</table>
</body>
</html>