繁体   English   中英

错误 - 无法在“节点”上执行“removeChild”:参数 1 不是“节点”类型 -

[英]Error - Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'-

下午好。 我正在开发增强现实体验。 我正在创建一个 function ,其中触摸按钮执行 createElement 并创建实体(3d 模型)。 在那之前,一切都很好。 然后我正在开发另一个功能,以便在执行其中一个按钮的 createElement 时,删除另一个按钮的子项,以防它被渲染。

在此处输入图像描述

这个想法是,当您单击 RED BSC 时,从触摸 RED ETH20 派生的 2 个按钮被删除,但我收到错误“未捕获的类型错误:无法在“节点”上执行“removeChild”:参数 1 不是类型'节点'

数据.js

 export const data = [ { net: 'eth', model1: { id: 'eth-1', position: {x: 14, y: 5, z: 0}, scale: {x: 1.5, y: 1.5, z: 1.5}, model: 'asset-mana', }, model2: { id: 'eth-2', position: {x: 14, y: 3, z: 0}, scale: {x: 1.5, y: 1.5, z: 1.5}, model: 'asset-sand', }, }, { net: 'bsc', model1: { id: 'bsc-1', position: {x: 14, y: 2, z: 0}, scale: {x: 1.5, y: 1.5, z: 1.5}, model: 'asset-cake', }, }, ]

实用程序.js

 const removeInfoModels = () => { const infoModel1 = document.getElementById('eth-1') const infoModel2 = document.getElementById('eth-2') const infoModel3 = document.getElementById('bsc-1') if (infoModel3) { wrapper.removeChild(infoModel1) wrapper.removeChild(infoModel2) } else if (infoModel1) { wrapper.removeChild(infoModel3) } } const createEntity2 = (id, scale, position, model) => { // creamos la entidad const entity = document.createElement('a-entity') entity.setAttribute('id', id) entity.setAttribute('scale', scale) entity.setAttribute('position', position) entity.setAttribute('gltf-model', `#${model}`) // la metemos al html wrapper.appendChild(entity) } const showInfoModels = (data, netType) => { removeInfoModels() const dataObj = data.filter(obj => obj.net === netType) const question = dataObj.filter(element => element.model2) // = true if (question) { dataObj.forEach((elemento) => { createEntity2(dataObj[0].model1.id, dataObj[0].model1.scale, dataObj[0].model1.position, dataObj[0].model1.model) createEntity2(dataObj[0].model2.id, dataObj[0].model2.scale, dataObj[0].model2.position, dataObj[0].model2.model) }) } else { dataObj.forEach((elemento) => { createEntity2(dataObj[0].model1.id, dataObj[0].model1.scale, dataObj[0].model1.position, dataObj[0].model1.model) }) } }

因此,仅根据您提供的代码,我看不到wrapper变量的声明位置。

无论如何,您可能只想使用.remove()直接删除元素,而不是尝试使用.removeChild()从父级中删除它们。

所以基本上你会有类似的东西:

infoModel1.remove();

经常直接在要删除的元素上调用.remove()比尝试从父元素中删除它更容易。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM