polymer要素を作成しています。テンプレートを作成し、スクリプトで作業しています。何らかの理由で、document.querySelectorがクラスセレクターとIDセレクターの両方に対してnullを返しています。これはpolymer(そうすべきではない理由はありません)では機能しません)または何かをインポートしていないか、他に何が問題なのか。
event-card.html
<link rel="import" href="../components/polymer/polymer.html">
<link rel="import" href="event-card-description.html">
<polymer-element name="event-card" attributes="header image description">
<template>
<style>
.card-header {
display: block;
position: static;
font-size: 1.2rem;
font-weight: 300;
width: 300px;
height: 300px;
border-radius: 50%;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
overflow: hidden;
}
event-card-description {
margin: 0;
position: relative;
top: 225px;
}
</style>
<div
style="background: url(../images/{{image}}.jpg) no-repeat; background-size: cover"
class="card-header" layout horizontal center
on-mouseover='{{onHovered}}'
on-mouseout='{{onUnhovered}}'>
<event-card-description
id="description"
header={{header}}
description={{description}}>
</event-card-description>
</div>
</template>
<script>
Polymer('event-card', {
onHovered: function() {
var elem = document.querySelector("#description");
console.log(elem);
}
});
</script>
</polymer-element>
_<event-card-description id="description">
_は要素のシャドウドームにあります。 document.querySelector("#description")
は、メインドキュメントに_id#description
_があるノードを探しています。 Shadow dom境界がノードを非表示にしているため、ノードが見つからないことが予想されます。試してください:
_this.shadowRoot.querySelector("#description");
_
ただし、Polymerには、IDを持つ静的要素が_this.$.<id>
_にマップされるすばらしい機能があります。_this.$.description
_を使用してその要素を取得できます。
属性の複数の値には、~
記号を使用します例
var elem = document.querySelector("[attributes~=description]");
または、これを要素polymer-element
にのみ使用する場合は、次を使用します。
var elem = document.querySelector("polymer-element[attributes~=description]");