javascript 基础 模块展开 2017年1月24日

//展示 提取section数组 如果id不相同 则隐藏 因为有for 所以另外一个第二次循环会关闭
function showSection(id) {
    var sections = document.getElementsByTagName("section");
    for(var i=0 ; i<sections.length ; i++){
        if(sections[i].getAttribute("id") != id){
            sections[i].style.display = "none";
        }else {
            sections[i].style.display = "block";
        }
    }
}
function prepareInternalnav() {
    if(!document.getElementsByTagName) return false;
    if(!document.getElementById) return false;
    var articles = document.getElementsByTagName("article");
    if(articles.length == 0) return false; //用等于 别用<1 不会是负数
    var navs = articles[0].getElementsByTagName("nav"); //要时刻注意这里必须加[0] tagname是数组
    if(navs.length == 0) return false;
    var nav = navs[0];
    var links = nav.getElementsByTagName("a"); //取得article下nav下的所有a 组成的数组

    for(var i=0 ; i<links.length ; i++){
        var section_id = (links[i].getAttribute("href").split("#"))[1]; //对字符串进行拆分 本来是带# 无法传入方法
        if(!document.getElementById(section_id)) continue; //确保能找到 否则进行下次循环
        document.getElementById(section_id).style.display = "none"; // 初始化隐藏
        // 开始添加事件
        links[i].destination = section_id;
        links[i].onclick = function () {
            showSection(this.destination);
            return false; // fn内用this的原因是 再出发这个函数时 循环早就执行完毕 这时的link[i] 永远都是最后一个 你用this 就是当前的对象
                        //这里不能直接用section_id 也不能用links[i].destination 都是JS加载过程中 先触发立即执行的代码 再触发事件 事件的变量没找到回去上一级的变量 逐级寻找
        }

    }
}

array = string.split(character)
将一个字符串切割成两部分 从character作为切割点 这个点忽略 前面的是数组的[0] 后面的为[1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老老老刘啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值