【问题标题】:Linking to a section of a site that is hidden by a hide/show JavaScript function链接到被隐藏/显示 JavaScript 函数隐藏的网站部分
【发布时间】:2011-02-14 00:10:48
【问题描述】:

单击选项卡时,我正在使用一些 JavaScript 来显示/隐藏网站的各个部分。我想知道是否有办法可以链接回该页面并根据该链接打开某个选项卡。

这里是 JS:

   var ids=new Array('section1','section2','section3','section4');

function switchid(id, el){  
    hideallids();
    showdiv(id);

    var li = el.parentNode.parentNode.childNodes[0];
    while (li) {
        if (!li.tagName || li.tagName.toLowerCase() != "li")
            li = li.nextSibling; // skip the text node
        if (li) {
          li.className = "";
          li = li.nextSibling;
        }
    }
    el.parentNode.className = "active";
}

function hideallids(){
    //loop through the array and hide each element by id
    for (var i=0;i<ids.length;i++){
        hidediv(ids[i]);
    }         
}

function hidediv(id) {
    //safe function to hide an element with a specified id
        document.getElementById(id).style.display = 'none';
}

function showdiv(id) {
    //safe function to show an element with a specified id        
        document.getElementById(id).style.display = 'block';
}

还有 HTML

<ul>
<li class="active"><a onclick="switchid('section1', this);return false;">One</a></li>
<li><a onclick="switchid('section2', this);return false;">Two</a></li>
<li><a onclick="switchid('section3', this);return false;">Three</a></li>
<li><a onclick="switchid('section4', this);return false;">Four</a></li>
</ul>

<div id="section1"  style="display:block;">   
<div id="section2" style="display:none;">  
<div id="section3" style="display:none;">  
<div id="section4" style="display:none;">

我无法想出链接回特定部分的方法。这种方法甚至可以吗?

谢谢!

【问题讨论】:

    标签: javascript visibility hyperlink


    【解决方案1】:

    您可以在页面加载时运行一些脚本来检查 url 哈希并加载相应的部分:

    // on page load
    var sectionid = /section\d/i.exec(location.hash);
    if (sectionid) {
        var link = document.getElementById(switchid[0] +"_link");
        switchid(sectionid[0], link);
    }
    

    并为您的链接添加一个 ID:

    <li><a id="section2_link" onclick="switchid('section2', this);return false;">Two</a></li>
    

    【讨论】:

    • 是的,这就是我要找的。谢谢你。我很难让它工作。当我在页面加载事件中添加它时,什么也没有发生。此外,我不能再单击选项卡来激活。我对javascript相当陌生,所以我可能遗漏了一些东西。我对以您的方式重用“switchid”有点困惑。
    • 我在使用你的函数 switchid 时出错。我稍微清理了我的示例,但是您肯定需要对其进行修改以使其正常工作。损坏的标签可能是 JS 错误,您检查浏览器的 javascript 错误控制台了吗?
    【解决方案2】:

    HTML 功能完全独立于 CSS。因此,即使将预期部分设置为 display:none,以下代码也将始终有效。

    <a href="#section3">Link to section3</a>
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-01
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2010-10-01
    相关资源
    最近更新 更多