2016-09-27 115 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');不起作用的原因,但必須有一種方法可以在元素創建後添加非值屬性。這對於如何去做並不明顯(至少對我來說)。

相關問題