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