如何使用 removeChild 删除特定元素
How to remove specific elements using the removeChild
使用以下代码生成加载块:
function loadChunk (ndx){
var passId = "zChunk" + ndx;
var zPos = ndx * 24;
var addEl = document.createElement('a-entity');
addEl.setAttribute("id", passId);
addEl.setAttribute("gltf-model", "#bound");
addEl.object3D.position.set(0, 0, zPos);
sceneEl.appendChild(addEl);
}
现在我正在尝试移除离我太远的块:
function stepLoad(cPos){
if (cPos / 24 - loadId < 0.5){
return;
}
else if(cPos > loadId){
loadId ++;
loadChunk(loadId + 12);
console.log('load');
sceneEl.removeChild(getElementById("zChunk" + (loadId -13)));
//retrieve chunk with (loadId - 12) and unload it
}
else{
return;
}
};
cPos 是相机位置。
loadId 正在跟踪我当前加载的内容。
所以现在忽略没有在另一个方向加载和卸载的代码,这将在 else 语句中。现在我正在查看 sceneEl.removechild,我无法在其中生成对 ID 为“zChunk-13”的元素的正确引用。我已经检查过,生成的元素具有正确的 ID。我猜它与嵌套在 removechild 中的 getElementById 中的嵌套数学有关,即使我可以让它使用不同的语法,我也更喜欢更干净的东西。有任何修复吗?
getElementById()
是 document
对象的一个方法。因此,您应该改为调用 document.getElementById()
。
使用以下代码生成加载块:
function loadChunk (ndx){
var passId = "zChunk" + ndx;
var zPos = ndx * 24;
var addEl = document.createElement('a-entity');
addEl.setAttribute("id", passId);
addEl.setAttribute("gltf-model", "#bound");
addEl.object3D.position.set(0, 0, zPos);
sceneEl.appendChild(addEl);
}
现在我正在尝试移除离我太远的块:
function stepLoad(cPos){
if (cPos / 24 - loadId < 0.5){
return;
}
else if(cPos > loadId){
loadId ++;
loadChunk(loadId + 12);
console.log('load');
sceneEl.removeChild(getElementById("zChunk" + (loadId -13)));
//retrieve chunk with (loadId - 12) and unload it
}
else{
return;
}
};
cPos 是相机位置。
loadId 正在跟踪我当前加载的内容。
所以现在忽略没有在另一个方向加载和卸载的代码,这将在 else 语句中。现在我正在查看 sceneEl.removechild,我无法在其中生成对 ID 为“zChunk-13”的元素的正确引用。我已经检查过,生成的元素具有正确的 ID。我猜它与嵌套在 removechild 中的 getElementById 中的嵌套数学有关,即使我可以让它使用不同的语法,我也更喜欢更干净的东西。有任何修复吗?
getElementById()
是 document
对象的一个方法。因此,您应该改为调用 document.getElementById()
。