2016-09-27 76 views
0

如何使用HTML::Element创建一个具有缺少值的属性的HTML元素?如何使用HTML ::元素创建不带值的HTML属性

例如,checked属性通常不具有价值,是这样的:

<input checked name="field" type="checkbox" /> 

下面的例子,但是,让我们用一个空字符串作为值checked属性:

<input checked="" name="field" type="checkbox" /> 

代码:

use HTML::Element; 
my $h = HTML::Element->new ('input'); 

$h->attr (type => 'checkbox'); 
$h->attr (name => 'field'); 
$h->attr (checked => ''); 

print STDOUT $h->as_HTML, "\n"; 
+0

“checked属性通常没有任何值”该值对于布尔HTML属性是可选的。您可以执行'checked =“checked”'或简单地'checked'。 – ThisSuitIsBlackNot

+0

你没有回答我的问题。 –

+0

我在说你可以做'$ h-> attr(checked =>'checked');'获得与你想要的相同的HTML。 – ThisSuitIsBlackNot

回答

2

编辑:ThisSuitIsBlac k没有上述正确的解决方案:

$h->attr (checked => 'checked'); 

工作。如果他添加它作为答案,我会删除我的。不知道如何从文档中得出这个结论,但是......如果它出现在某个地方,我希望有人指向它。

老办法: 不是一个完美的解决方案,但我得到它的工作执行以下操作:

use HTML::Element; 
my $h = HTML::Element->new ('input', 'checked'); 

$h->attr (type => 'checkbox'); 
$h->attr (name => 'field'); 

print STDOUT $h->as_HTML, "\n"; 

产生这样的:

<input checked name="field" type="checkbox" /> 

但必须有这样做的更好的方法这....

该CPAN文件陈述如下:

请注意,将属性设置为undef(与“”,空 字符串)实际上会删除该属性。

这是$h->attr ('checked');不起作用的原因,但必须有一种方法可以在元素创建后添加非值属性。这对于如何去做并不明显(至少对我来说)。