Javascript 选择具有由模板生成的ID的元素

Javascript 选择具有由模板生成的ID的元素,javascript,polymer,web-component,shadow-dom,Javascript,Polymer,Web Component,Shadow Dom,我试图创建一个表,这样每个单元格都有一个唯一的ID对应于它的坐标。这在聚合物中没有问题;我刚做完 {{space}} 其中,列,文件和空间是传递给Polymer()函数的对象上的键(分别是数组和字符串)。这一切都按预期进行 现在的问题是根据模板生成的ID选择一个表单元格。正在执行吗 var place=file+rank; this.$.place.innerHTML='foo' 不起作用,因为它抛出“无法设置未定义的innerHTML属性”错误。我一生都想不出一种方法来告诉Polymer的

我试图创建一个表,这样每个单元格都有一个唯一的ID对应于它的坐标。这在聚合物中没有问题;我刚做完


{{space}}

其中,
文件
空间
是传递给Polymer()函数的对象上的键(分别是数组和字符串)。这一切都按预期进行

现在的问题是根据模板生成的ID选择一个表单元格。正在执行吗

var place=file+rank;
this.$.place.innerHTML='foo'


不起作用,因为它抛出“无法设置未定义的innerHTML属性”错误。我一生都想不出一种方法来告诉Polymer的自定义节点查找语法如何查找模板中未明确定义的ID(例如“#table”)。

在首次设置元素时,将设置对具有ID的元素的自动节点查找。抱歉,您不能将其用于具有动态创建ID的节点。相反,使用
this.shadowRoot
并查询节点:

this.shadowRoot.getElementById(place).innerHTML = 'foo';

这是行不通的
place
是一个变量,而不是
$
上的属性。您需要使用数组表示法:

this.$[place].innerHTML = 'foo';

但是,这不起作用,因为ID是在元素准备好后动态创建的。

我向你喜欢的天体发誓,我尝试了
这个.shadowRoot
,但我可能弄错了。为答案干杯-当我有更多的睡眠和咖啡因的时候,我会试试这个。啊,它奏效了。我想我一定是在
shadowRoot
上尝试了所有其他变体。谢谢:)NP。很高兴你现在在做饭。
this.$[place].innerHTML = 'foo';