vue2中await中使用document.getElementById获取viedeo元素找不到元素
时间: 2024-03-09 07:47:22 浏览: 29
在Vue 2中,可以使用`$refs`来获取组件或元素对象,而不需要使用`document.getElementById()`方法。因此,可以将上面提到的`getVideoElementById`方法替换为以下代码:
```javascript
function getVideoElementById(id) {
return new Promise((resolve) => {
const videoElement = this.$refs[id];
resolve(videoElement);
});
}
```
在上面的代码中,我们使用`this.$refs`来获取指定ID的video元素,然后将其作为Promise对象的返回值。然后,在使用async/await时,我们可以像之前一样等待该Promise对象的返回结果,并将结果赋值给videoElement变量,如下所示:
```javascript
async function example() {
const videoElement = await getVideoElementById.call(this, 'myVideo');
console.log(videoElement);
}
```
在上面的代码中,我们使用`call`方法将Vue实例作为`getVideoElementById`方法的上下文,以便在该方法中可以使用`this.$refs`来获取元素对象。然后,我们使用`await`等待该方法的返回结果,并将结果赋值给videoElement变量。最后,我们打印出获取到的video元素对象。
需要注意的是,当使用`$refs`时,应该确保指定的ID存在于组件或元素中。如果指定的ID不存在于组件或元素中,将会返回`undefined`,而不是一个有效的元素对象。