我正在使用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});
}
}
有人知道这个问题吗?非常感谢您的帮助。
我设法自己解决了这个问题,即使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});
}
}
这里是另一种解决方案(至少适用于v1.00 +):