当我尝试获取元素的id时,我将此问题与TypeScript(对于Angular2)一起使用。 见这个例子:
<div id="search">
<div id="field1"></div>
<div id="field2"></div>
</div>
如果我尝试获取其中一个嵌套div的id,我可以正常执行此操作:
var element = document.getElementById("search");
var subelement = element.childNodes;
subelement[1].id;
然后我会&#34; field2&#34;。
但是当我尝试使用TypeScript执行此操作时,我收到了消息属性&#39; id&#39;类型&#39;节点&#39; 上不存在。结果我的代码不起作用。 我真的需要一个解决方案,因为我需要知道另一个内部的嵌套元素,除非有更好的方法。
答案 0 :(得分:3)
节点不仅仅是元素,也不一定具有id
属性。您应该使用.children
,它只是元素的集合。
答案 1 :(得分:0)
我会使用document.getElementById来引用Angular2中的DOM元素,而是像这样利用@ViewChild
:
@Component({
(...)
template: `
<div #search>
<div id="field1"></div>
<div id="field2"></div>
</div>
`
})
export class SomeComponent {
@ViewChild('search') searchElement:ElementRef;
ngAfterViewInit() {
let domElement = searchElement.nativeElement;
(...)
}
}
答案 2 :(得分:0)
错误TS2551:类型“节点”上不存在属性“ setAttribute”。您是说“属性”吗?
const elements = document.querySelectorAll("text");
elements[k].style.transform = '...........';
////错误
elements[k]['style'].transform = '..........';
//正在工作
elements[k].parentNode.setAttribute('....');
////错误
elements[k].parentNode['setAttribute']('..');
//正在工作