Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 删除子项不工作,只删除其中的一半_Javascript_Three.js - Fatal编程技术网

Javascript 删除子项不工作,只删除其中的一半

Javascript 删除子项不工作,只删除其中的一半,javascript,three.js,Javascript,Three.js,在这段代码中,如果我删除了其中的一半,我就不能删除所有的子项??我得到了一个错误孩子在我定义它的时候不庄重吗?每个节点都有子球体(节点)和边(线)。此方法仅删除节点,为什么?谁能帮我一下吗 function onMouseClick( e ) { mouseVector.x = 2 * (e.clientX / containerWidth) - 1; mouseVector.y = 1 - 2 * ( e.clientY / containerHeight );

在这段代码中,如果我删除了其中的一半,我就不能删除所有的子项??我得到了一个错误
孩子
在我定义它的时候不庄重吗?每个节点都有子球体(节点)和边(线)。此方法仅删除节点,为什么?谁能帮我一下吗

function onMouseClick( e ) {


    mouseVector.x = 2 * (e.clientX / containerWidth) - 1;
    mouseVector.y = 1 - 2 * ( e.clientY / containerHeight );


    var raycaster = projector.pickingRay( mouseVector.clone(), camera ),
    intersects = raycaster.intersectObjects( scene.children );


    for( var i = 0; i < intersects.length; i++ ) {
        //INTERSECTED = intersects[0].object;

        INTERSECTED = intersects[i].object;
        //obj = intersection.object;

        alert(INTERSECTED.id);

        /*1-*/      //this
        //scene.remove(INTERSECTED);

        /*2-*/      //or this
        for ( c = 0, cl = INTERSECTED.children.length; c < cl; c ++ ) {
            var child = INTERSECTED.children[ c ];
            alert(child.id);
            //child.parent.remove(obj);
            INTERSECTED.remove(child);
            //var lin = scene.children[child.id+1];

            //r lin = scene.getObjectById(child.id+1, true );
            // alert(child.id+1);
            // INTERSECTED.remove(scene.children[child.id+1]);
        }    

        //scene.remove(INTERSECTED);
        scene.add(INTERSECTED);

        animate();
    }
}
鼠标点击功能(e){ mouseVector.x=2*(e.clientX/containerWidth)-1; mouseVector.y=1-2*(e.clientY/containerHeight); var raycaster=projector.pickingRay(mouseVector.clone(),camera), intersects=光线投射器。intersectObjects(scene.children); 对于(变量i=0;i
我认为问题在于循环一个数组,您正在更改数组的长度。这与three.js无关,而是您在javascript代码中犯的一个基本(初学者)错误。
也许您应该重写代码并使用while循环:

while( INTERSECTED.children.length > 0 ){

    var child = INTERSECTED.children[ 0 ];
    INTERSECTED.remove(child);

}