0

单击另一个元素时,我需要显示/隐藏具有相同名称的多个元素,例如单击时 <span name="showhide" value="one" id="button">Click to Hide One</span>
<span name="showhide" value="two" id="button">Click to Hide Two</span>
<span name="showhide" value="shoe" id="button">Click to Hide shoe</span>
会隐藏具有相应值的元素
<span name="showhide" value="one">One</span>
<span name="showhide" value="two">Two</span>
<span name="showhide" value="shoe">shoe</span>

另外,onclick=''不能在 HTML 中使用,它必须在脚本中使用。也不能将任何属性应用于除 href 之外的标签(这是用于 MediaWiki)

我尝试了很多不同的方法,但我似乎无法让它发挥作用,有人有什么建议吗?

4

2 回答 2

2

标记无效:没有<span name>or之类的属性<span value>,并且您不能有多个具有相同id. 所有这些都可能会混淆您通过名称或 id 获取元素的任何尝试。改用 a class,因为你得到的是指向页面其他部分的链接,将它们标记为内部链接似乎是明智的。您始终可以使用 CSS 设置它们的样式,使其看起来不像链接。

<a class="showhide" href="#one">Click to hide one</a>
<a class="showhide" href="#two">Click to hide two</a>

<div id="one">One</div>
<div id="two">Two</div>

<script type="text/javascript">
    for (var i= document.links.length; i-->0;) {
        var link= document.links[i];
        if (link.className=='showhide') {
            var div= document.getElementById(link.hash.substring(1));
            Toggler(link, div, true);
        }
    }

    function Toggler(toggler, togglee, state) {
        toggler.onclick= function() {
            state= !state;
            togglee.style.display= state? 'block' : 'none';
            return false;
        }
    }
</script>
于 2010-07-07T20:19:14.803 回答
0

在页面加载时,首先向具有该名称的所有元素添加一个事件以切换隐藏/显示。单击元素时,循环遍历所有元素并将其样式更改为display:nonedisplay:block取决于当前状态。要识别当前状态,您可以找到display属性值或添加/删除一个类。

于 2010-07-07T20:10:02.583 回答