设置加载后的复选框状态
Setting checkbox states after load
我在设置自定义Google Maps API v3覆盖的可见性方面遇到了问题。我有一个gmaps API页面与各种覆盖,如多边形,折线和符号。每个都有一个相关的文本标签,使用自定义覆盖,我改编自[这个Stack Overflow帖子][1]的答案
在页面加载时,实际的覆盖(折线,多边形,标记等-内置API对象)正常工作。它们是基于默认复选框状态显示的。但是,无论标签的复选框是否默认设置,都会显示所有标签。如果我循环复选框,一切都能正常工作。
叠加被存储为一个名为'overlays'的对象,布局为'description: [polyline, customoverlaylabel]'
复选框示例代码:
<input type="checkbox" id="sun" onclick="refreshCheck('sun')">Sun</input>
这是我如何同步显示是隐藏还是可见的复选框:
function refreshCheck(overlay) {
var box = document.getElementById(overlay).checked
var lines = overlays[overlay][0]
var text = overlays[overlay][1]
lines.setVisible(box, overlay)
if (box === true) {
text.show()
}
else {
text.hide()
}
}
这段代码刷新所有的复选标记,在javascript头的末尾。
var overlayNames = []
for (var k in overlays) overlayNames.push(k)
for (var o in overlayNames) refreshCheck(overlayNames[o])
下面是自定义文本叠加的隐藏方法:
TxtOverlay.prototype.hide = function(){
if (this.div_) {
this.div_.style.visibility = "hidden";
}
}
它没有通过if (this.div_)检查,并且没有做任何事情。如果我删除检查,它会产生一个错误。div不存在
解决这个问题的一种方法是在页面加载后自动循环所有复选框状态(手动执行以解决此问题)。也许有一个更根本的解决办法。无论我在哪里尝试。hide()或。show()在我的javascript标签,它不工作-它只工作时被选中的复选框被点击。
问题是当你调用refreshChecks()
时。
您假设此时已经添加了TxtOverlay's,但事实并非如此(这就是为什么div_'s仍然为空)。
地图上的txoverlay 's(像任何物体/形状)将在地图的投影准备好时添加。
一种可能的方法是:
而不是使用形状/标记等的visible
-属性。使用map
属性来切换它们的可见性。
TXTOverlay's也是MVCObject's,你只需要将TXTOverlay's的map
-属性绑定到相关形状的map
-属性。
- 基于复选框状态的条件数学
- 导航到另一个页面后,复选框状态会更改
- 如何根据各种复选框状态执行操作
- 检查复选框状态-Javascript
- JavaScript-使用sessionStorage保存文档之间共享的复选框状态
- React.js可以't更改复选框状态
- 如何检查更改事件的复选框状态
- 基于各种用户行为管理复选框状态
- 根据 ajax 响应中的值设置复选框状态
- 从 django 读取复选框状态
- 分析获取查询字符串并使用值更改复选框状态
- 是否可以在不导致单击事件的情况下更改复选框状态
- 如何在 javascript 的信息窗口中使用 cookie 保存复选框状态
- 复选框提醒脚本在动态加载测试时不记得复选框状态.php其中包含复选框
- 保持选中复选框状态,直到用户取消选中
- 复选框状态(如果未选中)
- 复选框状态和其他属性
- 根据 AngularJS 中的多个条件更改复选框状态
- 自动将复选框状态/值保存到数据库
- 在复选框状态ExtJS 4.1中手动检测与编程更改