0

我有一个网页,可以在游戏的图像地图上覆盖村庄和警卫塔的位置。我创建了一个 javascript 函数来显示和隐藏透明的 .png 网格和图例。我也想用这个功能来显示/隐藏守卫塔。脚本工作得很好,但是当我尝试隐藏塔时,脚本只会选择数据库中的第一个塔。

<script language="javascript" type="text/javascript">
function toggleLayer(whichLayer){
    if (document.getElementById) {
        var e = document.getElementById(whichLayer)
        e.style.display = e.style.display == "none" ? "block" : "none";
    }
}
</script>

然后我有一个按钮来调用该函数。

<form method="get" action="javascript:toggleLayer('tower');"><button class="botbuttprefs" type="submit">Show/Hide Towers</button></form>
ECHO "<div class='type' id='tower' style='top:",$GETy[$e]-2,"px; left:",$GETx[$e]-2,"px; width:4px; height:4px; z-index:2; background-color:black'></div>";
4

1 回答 1

0

目前尚不完全清楚你在问什么问题。

document.getElementById使用 id 值并仅返回一个元素,并且页面中应该只有一个具有给定 id 的项目。因此,如果您期望它以某种方式神奇地与具有相同 id 的多个元素一起工作,那么它不会。

要在页面中选择多个元素,有多种方法可以做到这一点,但最简单的方法是给每个元素一个通用的类名。然后您可以使用document.querySelectorAll(".myClass")它,它将返回一个 DOM 节点列表,然后您可以对其进行迭代以将更改应用于所有节点。

您可能还想知道,element.style.display如果该节点上没有设置明确的样式,读取可能会返回一个空字符串。 element.style.display不返回可能由于默认条件或样式表规则而生效的设置。如果您想使实际值生效,则需要使用getComputedStyle().


此外,没有理由使用它:

if (document.getElementById)

所有浏览器都有这种方法。

于 2013-11-10T22:14:26.700 回答