更改JSXGraph中滑块的可见性

问题描述 投票:0回答:2

我正在使用JSXGraph创建一堆滑块,应该通过复选框更改其可见性。不幸的是,setAttribute()并没有真正起作用。它仅更改滑块“头”的可见性,而不更改其范围的可见性。这是我的JavaScript代码示例:

ctx.slider_A = ctx.box_left.create("slider", [[50, 50], [230, 50], [0, 0.4, 1]], 
                {withLabel: false, snapWidth: 0.05, fillColor: ctx.textColor, visible: false});

function sliderVisibility(){
    var Checkbox = getElementById("check");
    if (Checkbox.checked == true) {
         ctx.slider_A.setAttribute({visible: true});
    }else{
         ctx.slider_A.setAttribute({visible: false});
    }
}

有人知道这个问题吗?非常感谢您的帮助。

javascript slider visibility setattribute jsxgraph
2个回答
0
投票

我设法自己解决了这个问题,即使JSXGraph文档(https://jsxgraph.uni-bayreuth.de/docs/symbols/Slider.html)并没有真正帮助我。我犯了一个错误,即假定滑块被视为单个对象,但实际上它由四个部分组成:滑块本身(我之前称为“头部”),基线,高线和刻度线基线的。如果要更改整个对象的可见性,则需要为每个组件进行更改。

我不知道是否有更优雅的方法可以做到这一点(我很确定有,但是对于我来说,这种解决方案就足够了,但是我是这样做的:]]

function sliderVisibility(){
    var Checkbox = getElementById("check");
    if (Checkbox.checked == true) {
         ctx.slider_A.setAttribute({visible: true});
         ctx.slider_A.baseline.setAttribute({visible:true});
         ctx.slider_A.highline.setAttribute({visible:true});
         ctx.slider_A.ticks.setAttribute({visible:true});
    }else{
         ctx.slider_A.setAttribute({visible: false});
         ctx.slider_A.baseline.setAttribute({visible:false});
         ctx.slider_A.highline.setAttribute({visible:false});
         ctx.slider_A.ticks.setAttribute({visible:false});
    }
}

0
投票

这里是另一种解决方案(至少适用于v1.00 +):

© www.soinside.com 2019 - 2024. All rights reserved.