js 简单的页面导航

简介: js 简单的页面导航

实现效果:

实现原理:

实现原理是通过创建数组里面包含对应页面的信息,当点击的时候为数组传递一个对象,里面包含要显示的信息。

跳转链接实现原理:

通过创建一个数组,里面包含所有可以跳转的页面链接名称,为所有的菜单绑定对应跳转的class名点击判断链接数组存在的话,就进行跳转。

html部分:

    <!-- 框架 -->
    <div class="nav">
    <!-- 左 -->
    <div class="left">
        <!-- loge -->
        <div class="loge">
            <div>
                <img src="img/ia_100000000.png" alt="">
                <p>企业家联合会</p>
            </div>
        </div>
        <!-- 菜单部分 -->
        <div class="menus">
            <div class="menus_list">
                <div class="title">
                    <!-- 一级菜单 -->
                    <div class="title_centent" style="background-color: #409eff;">
                        <img src="img/touxiang.png" alt="">
                        <span>首页</span>
                    </div>
                    <div class="title_select">
                        <p>></p>
                    </div>
                </div>
                <!-- 二级菜单 -->
                <div class="menus_children">
                    <div>
                        <img src="img/touxiang.png" alt="">
                        <span>首页</span>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <!-- 右 -->
    <div class="right">
         <div class="right_a"> 
            <div class="right_a_left">
                <div>
                    <img src="./img/展开(黑).png" alt="">
                </div>
                <div>
                    <img src="./img/首页(黑).png" alt="">
                    <p>首页</p>
                </div>
            </div>
            <div class="right_a_right">
                <div></div>
                <div class="full_screen"><img src="./img/全屏.png" alt=""></div>
                <div><img src="./img/刷新.png" alt="" onclick="refresh()"></div>
                <div><img src="./img/ia_100000001.gif" alt=""></div>
            </div>
        </div>
        <hr></hr>
        <div class="right_b">
            <div style="display: flex;" class="right_kk">
            </div>
         </div>
         <div class="right_c">
             <iframe src="index.html" frameborder="0"></iframe>
         </div>
     </div>
    </div>
  </div>

js部分:

let link = ['account', 'agree', 'index', 'industry','goods'];
render()
function render() {
    let str = '';
    if (log_in != '') {
        for (let i = 0; i < log_in.roles.length; i++) {
            if (log_in.roles[i].children == '') {
                let kkk = {
                    title: log_in.roles[i].meta.title,
                    link: log_in.roles[i].name
                }
                str += `
                <div class="menus_list" onclick = fn(${JSON.stringify(kkk)}) id="${log_in.roles[i].name}">
                <div class="title">
                    <!-- 一级菜单 -->
                    <div class="title_centent">
                        <img src="${img[i]}" alt="">
                        <span>${log_in.roles[i].meta.title}</span>
                    </div>
                    <div class="title_select">
                    </div>
                </div>
            </div>
            <div class="menus_children">
            </div>
                  `
            } else {
                str += `
                <div class="menus_list">
                <div class="title">
                    <!-- 一级菜单 -->
                    <div class="title_centent">
                        <img src="${img[i]}" alt="">
                        <span>${log_in.roles[i].meta.title}</span>
                    </div>
                    <div class="title_select">
                    </div>
                </div>
            </div>
            <div class="menus_children">
            </div>
                  `
            }
        }
    }
    $('.menus').html(str);
}
// 二级列表渲染
Secondary_list()
function Secondary_list() {
    let subset = '';
    let arrows = '';
    for (let i = 0; i < log_in.roles.length; i++) {
        if (log_in.roles[i].children != '') {
            arrows = ' <p>></p>'
            for (let k = 0; k < log_in.roles[i].children.length; k++) {
                let kkk = {
                    title: log_in.roles[i].children[k].meta.title,
                    link: log_in.roles[i].children[k].name
                }
                subset += `<div onclick=fn(${JSON.stringify(kkk)}) id="${log_in.roles[i].children[k].name}" class="link_a">
                        <img src="${imgs[i][k]}" alt="">
                        <span>${log_in.roles[i].children[k].meta.title}</span>
                    </div>`
            }
            $('.menus_children').eq(i).html(subset);
            $('.title_select').eq(i).html(arrows);
            subset = '';
        }
    }
    $('.menus_list').eq(0).css('background-color', '#409eff');
}
// 菜单列表展开隐藏
$('.menus_list').on('click', function () {
    let num = $('.menus_list').index(this);
    $('.menus_children').eq(num).toggle();
    console.log($('.title_select p').eq(num));
})
//本地存储一个首页的默认值
sessionStorage.setItem('名称', 'index');
// 面包屑渲染数组
let arr = [
    {
        title: '首页',
        link: 'index'
    }
];
// 点击函数
function fn(k) {
    sessionStorage.setItem('名称', k.link);
    $('.menus_list').eq(0).css('background-color', '');
    for (let i = 0; i < link.length; i++) {
        if (link[i] == k.link) {
            $('.right_c iframe').attr('src', k.link + '.html')
        }
    }
    if (arr == '' || arr == null) {
        if (k.title != '首页') {
            arr.push(k);
            xuanran()
        }
    } else {
        // 判断数组中是否存在此对象
        if (!arr.some(item => item.title === k.title)) {
            // 将对象添加到数组中
            if (k.title != '首页') {
                arr.push(k);
            }
        }
        xuanran()
    }
}
// 面包屑渲染
xuanran()
function xuanran() {
    let pitch_on = sessionStorage.getItem('名称');
    let str = '';
    let a = $('.right_c iframe').attr('src').split('.')[0];
    for (let i = 0; i < arr.length; i++) {
        if (arr[i].title != '首页') {
            if (arr.length > 0) {
                if (arr[i].link == pitch_on) {
                    str += `
                <div class="${a == pitch_on ? 'right_kk_a' : ''}">
                <p onclick = redirect(${JSON.stringify(arr[i])})>${arr[i].title}</p>
                <span onclick = close_a(${JSON.stringify(arr[i])},${i})>x</span>
               </div>
                `
                } else {
                    str += `
                <div>
                <p onclick = redirect(${JSON.stringify(arr[i])})>${arr[i].title}</p>
                <span onclick = close_a(${JSON.stringify(arr[i])},${i})  class="shanchu">x</span>
               </div>
                `
                }
            }
        } else {
            str += `
            <div style="background-color: ${pitch_on == $('.menus_list').eq(0).attr('id') ? ' rgba(236, 245, 255)' : ''}; color:${pitch_on == $('.menus_list').eq(0).attr('id') ? 'rgba(80, 166, 255);' : ''};border-bottom:${pitch_on == $('.menus_list').eq(0).attr('id') ? ' 1.5px solid blue;' : ''}">
            <p onclick = redirect(${JSON.stringify(arr[i])})>${arr[i].title}</p>
           </div>
            `
        }
    }
    // 左侧栏渲染
    for (let i = 0; i < $('.link_a').length; i++) {
        if ($('.link_a').eq(i).attr('id')) {
            if ($('.link_a').eq(i).attr('id') == pitch_on) {
                $('.menus_list').css('background-color', '');
                $('.link_a').css('background-color', '');
                $('.link_a').eq(i).css('background-color', '#409eff');
            }
        }
    }
    for (let i = 0; i < $('.menus_list').length; i++) {
        if ($('.menus_list').eq(i).attr('id')) {
            if ($('.menus_list').eq(i).attr('id') == pitch_on) {
                $('.menus_list').css('background-color', '');
                $('.link_a').css('background-color', '');
                $('.menus_list').eq(i).css('background-color', '#409eff');
            }
        }
    }
    $('.right_kk').html(str)
}
// 跳转链接
function redirect(a) {
    // // 添加id使对应点击的标签颜色改变
    // console.log($('.menus_list .title_centent span').html());
    sessionStorage.setItem('名称', a.link);
    for (let i = 0; i < link.length; i++) {
        if (link[i] == a.link) {
            $('.right_c iframe').attr('src', a.link + '.html')
        }
    }
    xuanran()
}
// 删除功能
function close_a(a, i) {
    let pitch_on = sessionStorage.getItem('名称');
    if (arr != '') {
        if (arr[i].link == pitch_on) {
            console.log(arr[i].link);
            arr.splice(i, 1);
            if (arr.length > 0) {
                sessionStorage.setItem('名称', arr[arr.length - 1].link);
                $('.right_c iframe').attr('src', arr[arr.length - 1].link + '.html');
            } else {
                sessionStorage.setItem('名称', 'index');
                $('.right_c iframe').attr('src', 'index.html');
            }
            xuanran()
        } else {
            arr.splice(i, 1);
            xuanran()
        }
    }
}
目录
相关文章
|
3月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
|
2天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
23 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
6天前
|
前端开发
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
25 1
【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
|
29天前
|
人工智能 程序员 UED
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
116 21
【01】完成新年倒计时页面-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
27天前
|
前端开发 JavaScript
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
52 14
【02】v1.0.1更新增加倒计时完成后的放烟花页面-优化播放器-优化结构目录-蛇年新年快乐倒计时领取礼物放烟花html代码优雅草科技央千澈写采用html5+div+CSS+JavaScript-优雅草卓伊凡-做一条关于新年的代码分享给你们-为了C站的分拼一下子
|
6月前
|
开发框架 JavaScript 前端开发
揭秘:如何让你的asp.net页面变身交互魔术师——先施展JavaScript咒语,再引发服务器端魔法!
【8月更文挑战第16天】在ASP.NET开发中,处理客户端与服务器交互时,常需先执行客户端验证再提交数据。传统上使用ASP.NET Button控件直接触发服务器事件,但难以插入客户端逻辑。本文对比此法与改进方案:利用HTML按钮及JavaScript手动控制表单提交。后者通过`onclick`事件调用JavaScript函数`SubmitForm()`来检查输入并决定是否提交,增强了灵活性和用户体验,同时确保了服务器端逻辑的执行。
72 5
|
5月前
|
前端开发 JavaScript API
前端JS读取文件内容并展示到页面上
前端JavaScript使用FileReader API读取文件内容,支持文本类型文件。在文件读取成功后,可以通过onload事件处理函数获取文件内容,然后展示到页面上。
168 2
前端JS读取文件内容并展示到页面上
|
4月前
|
Web App开发 前端开发 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(一)
JavaScript动态渲染页面爬取——Selenium的使用(一)
133 4
|
4月前
|
Web App开发 数据采集 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(二)
JavaScript动态渲染页面爬取——Selenium的使用(二)
141 2
|
5月前
|
JavaScript 前端开发
js 回到页面顶部
本文提供了一个JavaScript函数`scrollToTop`,用于平滑滚动页面回到顶部。该函数利用`requestAnimationFrame`和`window.scrollTo`方法逐步减少滚动条距离,直到页面完全回到顶部。
47 1

热门文章

最新文章

  • 1
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    23
  • 2
    Node.js 中实现多任务下载的并发控制策略
    32
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    25
  • 4
    【JavaScript】深入理解 let、var 和 const
    48
  • 5
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    44
  • 6
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    53
  • 7
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    55
  • 8
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    71
  • 9
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    55
  • 10
    JavaWeb JavaScript ③ JS的流程控制和函数
    62