我有以下代码: 的test.html
<!DOCTYPE html>
<html>
<head lang="zh-CN">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title></title>
</head>
<body>
<div id="container">
<div id="box"></div>
</div>
<script src="test.js"></script>
</body>
</html>
和ts文件test.ts
var box = document.querySelector('#box');
console.log(box.parentNode.querySelector('#box'));
我得到了错误。
Error:(2, 28) TS2339: Property 'querySelector' does not exist on type 'Node'.
我在MDN
中找到了以下句子parentNode是当前节点的父节点。元素的父元素是Element节点,Document节点或DocumentFragment节点。
这是我的测试
var ul = document.querySelector('ul')
undefined
ul.parentNode.toString()
[object HTMLDivElement]"
有人可以告诉我这有什么问题吗?
打字稿的版本是1.4
答案 0 :(得分:15)
有人可以告诉我这个有什么问题吗
TypeScript的API视图。目前无法说foo.parentNode
的类型取决于foo
的类型。目前推断为始终为Node
类型且Node
不包含API querySelector
(Element
上提供)
使用如下所示的类型断言:
var box = document.querySelector('#box');
console.log((<Element>box.parentNode).querySelector('#box'));
答案 1 :(得分:2)
对于那些使用Typescript和JSX寻找解决方案的人:
var box = document.querySelector('#box');
console.log((box.parentNode as HTMLElement).querySelector('#box'));
答案 2 :(得分:1)
使用
let box = <Element>document.querySelector('#box');
答案 3 :(得分:0)
parentNode成员返回父节点,该节点可以是Element或Node类型。您必须使用parentElement遍历DOM树而不是遍历XML树的parentNode。
var box = document.querySelector('#box');
console.log(box.parentElement.querySelector('#box'));
答案 4 :(得分:0)
我正在使用data2 =pd.DataFrame({
'country': [None, 'USA', 'Belarus', 'Russia','Brazil'],
'population': [1, 2, 3, 4, 5]})
population multiplication
1 1
2 2
3 6
4 24
5 120
的TS设置。
对我来说,这是将create-react-app
添加到2.1
的{{1}}列表中的问题。
dom
答案 5 :(得分:0)
对于任何在React Hooks / tsx中遇到此问题的人,我用as HTMLElement | null
更新了useRef的声明,然后可以使用可选链接而不会出错。
const formRef = useRef(null as HTMLElement | null);
const form = formRef?.current?.querySelector('form');