作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
嘿,我是 Typescript 的新手,在实现 Event Target 时遇到了一些问题。
Javascript 中使用的 event.target.matches 的 typescript 等价物是什么?
示例代码:
function myFunction() {
document.getElementById("myDropdown").classList.toggle("show");
}
// Close the dropdown menu if the user clicks outside of it
window.onclick = function(event) {
if (!event.target.matches('.dropbtn')) {
var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
最佳答案
你需要转换 ( type assertion ) event.target
就像 HTMLElement
提供访问 HTMLElement
方法如 matches()
.没有 Actor ,event.target
键入为 EventTarget
这就是为什么您没有看到 matches()
或其他 HTMLElement
可用的方法。
if (!(<HTMLElement> event.target).matches('.dropbtn')) { }
window.onclick = function(event) {
if (!(<HTMLElement> event.target).matches('.dropbtn')) {
var dropdowns = document.getElementsByClassName("dropdown-content");
var i;
for (i = 0; i < dropdowns.length; i++) {
var openDropdown = dropdowns[i];
if (openDropdown.classList.contains('show')) {
openDropdown.classList.remove('show');
}
}
}
}
as
作为备选:
window.onclick = function(event) {
const target = event.target as HTMLElement;
if (!target.matches('.dropbtn')) {
关于typescript - 如何在 Typescript 中使用 EventTarget,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49693981/
我是一名优秀的程序员,十分优秀!