删除带有功能参数[jsxgraph]的行时出错

问题描述

我有一个JSXGraph项目,在其中创建了一个在x。轴上的点(A)和一条垂直于x轴并穿过(A)的线。移动(A)时,线应沿该点移动。到目前为止效果还不错。
但是,只要按一下按钮,我想删除直线和点,并释放包含直线和点的变量。
这是我的问题所在。删除点/线并释放变量后,update()函数仍将调用用于定义线的函数,这会导致错误,因为该函数中的变量不再存在。
知道如何解决这个问题吗?

谢谢!

链接到小提琴:https://jsfiddle.net/t9rcva1x/1/

const testBoard = JXG.JSXGraph.initBoard('jxgBox',{ axis: true });
let testPoint = testBoard.create('point',[1,0]);
function testfunction() {
    return testPoint.X();
}
let testLine = testBoard.create('line',[
    [testfunction,0],[testfunction,1],]);
testBoard.removeObject(testLine);
testBoard.removeObject(testPoint);
testPoint = null;
testLine = null;
testBoard.update();

解决方法

实际上,对象之间的依赖性存在问题。如果从两个坐标数组(如

)创建了一条线
let testLine = testBoard.create('line',[
    [testfunction,0],[testfunction,1],]);

然后在内部创建两个JSXGraph点来定义线。现在,当删除该行时,JSXGraph不会自动删除这两个内部点。解决方法是手动删除以下两点:

document.getElementById('remove').addEventListener('click',()=>{
    testBoard.removeObject([
        testLine.point1,testLine.point2,testLine,testPoint
    ]);
});

https://jsfiddle.net/61ny8hm7/1/上查看

最良好的祝愿, 阿尔弗雷德

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...