web-dev-qa-db-ja.com

document.querySelector()はnullを返します

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>
13
user3903150

_<event-card-description id="description">_は要素のシャドウドームにあります。 document.querySelector("#description")は、メインドキュメントに_id#description_があるノードを探しています。 Shadow dom境界がノードを非表示にしているため、ノードが見つからないことが予想されます。試してください:

_this.shadowRoot.querySelector("#description");
_

ただし、Polymerには、IDを持つ静的要素が_this.$.<id>_にマップされるすばらしい機能があります。_this.$.description_を使用してその要素を取得できます。

15
ebidel

属性の複数の値には、~記号を使用します

var elem = document.querySelector("[attributes~=description]");

または、これを要素polymer-elementにのみ使用する場合は、次を使用します。

var elem = document.querySelector("polymer-element[attributes~=description]");
0
31113