使用jessiecode更新jsxgraph对象

时间:2018-06-19 06:38:46

标签: jsxgraph

我尝试使用jessiecode来更新画布对象。看起来我在这里错过了一些内容 - fiddle <script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>board.create('circle', [p1, 2.0],{visible:board.jc.snippet("counter < 5 || counter > 10", true, 'counter', false)});

在这个小提琴中,圈子的可见属性和1,1处的文字在点击按钮时不会改变。

1 个答案:

答案 0 :(得分:1)

这确实是一个挑战!这里的主要问题是不允许JessieCode访问JavaScript变量。这是设计使然:出于安全原因,必须阻止对DOM的访问。

这意味着counter必须是一个JessieCode变量。可以使用board.jc.parse("code")执行任意JessieCode代码。
这是完整的示例,请参见http://jsfiddle.net/a3x5de6t/4/

var board = JXG.JSXGraph.initBoard('jxgbox', {
    axis: true
});

// Set JessieCode variable `counter`
board.jc.parse("counter = 0;");

var p1 = board.create('point', [-2.0, 2.0]);

// Create `function() {return (counter < 5 || counter > 10) ? true: false; }`
var c1 = board.create('circle', [p1, 2.0],{visible: board.jc.snippet(
        "(counter < 5 || counter > 10) ? true: false", true, '', false)});

// Increase JessieCode variable `counter`
var button = board.create('button',[1, 4, 'increase counter',
    function() {
        board.jc.parse('counter = counter + 1;');
    }
]);

// Create function `function() {return counter; }` 
var t = board.create('text',[1, 1, board.jc.snippet('counter' , true, '', )]);

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