Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Polymer 从元素获取属性_Polymer_Web Component - Fatal编程技术网

Polymer 从元素获取属性

Polymer 从元素获取属性,polymer,web-component,Polymer,Web Component,我正在使用霓虹灯动画页面,我想看看是否在其子元素之一上设置了属性。据我所知,你可以添加任何你想要的属性,如果它在标记中,如果它没有显式设置值,它将解析为true。例如: <neon-animation-pages id="pages"> <div awesome>This one is awesome</div> <div>This one is not</div> <div>This one is

我正在使用霓虹灯动画页面,我想看看是否在其子元素之一上设置了属性。据我所知,你可以添加任何你想要的属性,如果它在标记中,如果它没有显式设置值,它将解析为true。例如:

<neon-animation-pages id="pages">
    <div awesome>This one is awesome</div>
    <div>This one is not</div>
    <div>This one is not</div>
</neon-animation-pages>
控制台根据其是否具有my Aowesome属性,只会显示“null”或“”。我可以让它工作,但我认为它应该解析为真或假,布尔


在文档中找到了这个

布尔属性是基于属性的存在而设置的:如果 如果该属性存在,则该属性将被设置为true,无论如何 属性值的值。如果缺少该属性,则该属性将 它的默认值

所以我假设我应该尝试获取selectedItem的属性>awesome的值。我该怎么做呢?

也许你想要

this.$.pages.selectedItem.hasAttribute('awesome')

属性和属性之间有一个重要的区别。属性是DOM对象上的JavaScript属性。属性基本上提供了一个字符串值的键/值数据库,可以从标记初始化该数据库

你引用的聚合物文档是关于性能的。如果聚合物元素在
properties
对象中列出了一个属性
awesome
,其类型为
Boolean
,它将反序列化为
true
false
,如前所述

这是Polymer提供的服务,因为它是HTML元素的常见模式。例如,如果在HTML元素上设置了
id
属性,浏览器会自动将该属性反映到
id
属性中。但是如果您添加了该元素不知道的通用属性(如
awesome
),则该属性不会反映为属性

如果您想测试任何元素(标准HTML或聚合物)上是否存在属性,请使用@günter-zöchbauer所说的
hasAttribute
。根据MDN,在所有现代浏览器中,当属性不存在时,
getAttribute
返回
null
,但显然这并不总是正确的,因此
hasAttribute
可能更安全,也更清晰


我想这是因为
awesome
没有分配值
awesome=“someValue”
。您希望从
这个.pages.selectedItem.getAttribute('awesome')中得到什么?
?刚刚意识到getAttribute可以正常工作。我实际上需要获取selectedItem的值或其中一个属性
this.$.pages.selectedItem.hasAttribute('awesome')