首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用JavaScript从组件外部遍历到本地DOM

使用JavaScript从组件外部遍历到本地DOM
EN

Stack Overflow用户
提问于 2015-07-03 05:30:33
回答 2查看 1.8K关注 0票数 3

我试图使用JavaScript从聚合物组件外部访问本地DOM元素。在过去,我可以使用document.querySelector并使用::shadow选择器选择shadowDOM元素。

目前,我了解到本地DOM被实现为"shady DOM“。在这种情况下,如何访问本地DOM元素?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-03 05:47:32

假设您有一个如下所示的组件,您需要从组件外部访问div元素:

代码语言:javascript
复制
<dom-module id="my-element">
  <template>
    <div id="container"></div>
  </template>
  <script>
    Polymer({is: 'my-element'});
  </script>
</dom-module>

在页面上,将元素放置为:

代码语言:javascript
复制
<my-element id="myElement"></my-element>

我们要做的第一件事是在我们的JS页面中获得对custom-element元素的引用:

代码语言:javascript
复制
var myElement = document.getElementById('myElement');

现在,为了达到div,我们有两个选择。第一个是聚合物的方便的自动节点查找。这使得组件中的每个元素(存在并在ready之前盖章)都被添加到this.$.<my-id>中。这使得我们很容易从外部接触到,就像这样:

代码语言:javascript
复制
var div = myElement.$.container;

但是,如果div没有ID,或者像这样无法到达,您可以使用附加到元素本身的聚合物自己的querySelector,如下所示:

代码语言:javascript
复制
var div = myElement.querySelector('div');

不过,我不得不说,这两种方法都应该是与组件交互的“最后手段”。通常,应该公开驱动该组件的DOM的方法或属性,而不是直接公开DOM元素。我建议你来聚合物板聊天,让我们知道你想做什么,我们可以给你一些好的选择。

票数 2
EN

Stack Overflow用户

发布于 2016-08-30 13:19:14

这在我的情况下是不够的。最后帮助我的是上面的答案,再加上以下几点:shadowRoot.querySelector

代码语言:javascript
复制
var myElement = this.shadowRoot.querySelector('#myElement');
var div = myElement.shadowRoot.querySelector('div');

我必须补充说,我是一个初学者,当涉及到聚合物,所以我不能真正解释为什么这对我,而不是上面的代码。但我相信情况是这样的,因为我在页面中使用了myElement,最终它本身就是一个自定义元素。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31199131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档