首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用javascript在单页站点中根据当前页面id返回下一个“页面”的id

使用javascript在单页站点中根据当前页面id返回下一个“页面”的id
EN

Stack Overflow用户
提问于 2015-01-02 10:36:42
回答 4查看 134关注 0票数 0

我正在创建一个简单的网站,应该有多个页面显示不同的背景和主要文本,但与相同的标志和菜单。当按下按钮时,下一页应从右边滑入,并从菜单中选择页面应直接切换到该页。我已经决定让这是一个单一的页面网站,以利用CSS3过渡。next按钮(减去转换)的示例代码如下:http://jsfiddle.net/xoa029jz/1/

我目前正在使用以下javascript计算要显示的背景和文本:

代码语言:javascript
复制
function getNextPage(pageid) {
    if (pageid == "page-1") {
        return $('#page-2');
    } else if (pageid == "page-2") {
        return $('#page-3');
    } else if (pageid == "page-3") {
        return $('#page-1');
    }
}

该网站将有7页,所以这似乎很麻烦。是否有更好的方法在javascript中使用顺序in?

该网站将只有一个图片和一个句子每个“页面”,所以我不认为有必要使用Ajax,但我愿意纠正这一点。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-01-02 10:43:47

在这种情况下,您可以使用不绑定到任何页面的类,

代码语言:javascript
复制
function getNextPage(pageid) {
    if($('.current-page').next('.page-text').length){
        return $('.current-page').next('.page-text');
    }
    return $('.page-text:first');
}

代码语言:javascript
复制
function slideToNext() {
    var currentPage = $('.current-page');
    var nextPage = getNextPage(currentPage.attr('id'));
    
    $(currentPage).removeClass('current-page');
    $(nextPage).addClass('current-page');

    var currentBackground = getCurrentBackground();
    var nextBackground = getNextBackground(currentBackground);

    $('#bg').removeClass(currentBackground);
    $('#bg').addClass(nextBackground);
}

function getNextPage(pageid) {
    if($('.current-page').next('.page-text').length){
        return $('.current-page').next('.page-text');
    }
    return $('.page-text:first');
}

function getCurrentBackground() {
    var bg = $('#bg');
    if (bg.hasClass('bg-1')) {
        return "bg-1";
    } else if (bg.hasClass('bg-2')) {
        return "bg-2";
    } else if (bg.hasClass('bg-3')) {
        return "bg-3";
    }
}

function getNextBackground(bg) {
    if (bg == "bg-1") {
        return "bg-2";
    } else if (bg == "bg-2") {
        return "bg-3";
    } else if (bg == "bg-3") {
        return "bg-1";
    }
}
代码语言:javascript
复制
.page {
    width: 100%;
    height: 100%;
    position: absolute;
    top: 0;
    left: 0;
    background-size: cover;
    background-position: center center;
    z-index:1;
}
.page-text {
    margin-top: 71px;
    display: none;
}
.current-page {
    display: inline;
    visibility: visible;
}
.bg-1 {
    background-color:#D8F6CE;
}
.bg-2 {
    background-color:#CEECF5;
}
.bg-3 {
    background-color:#E2A9F3;
}
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>

<body class="page bg-1" id="bg">
    <div id="page">
        <img id="logo" src="images/logo.png" width="295" height="92" />
        <div id="menu">
            <ul>
                <li>
                    <button>Page 1</button>
                </li>
                <li>
                    <button>Page 2</button>
                </li>
                <li>
                    <button>Page 3</button>
                </li>
            </ul>
        </div>
        <div class="page-text current-page" id="page1">Page 1 text</div>
        <div class="page-text" id="page2">Page 2 text</div>
        <div class="page-text" id="page3">Page 3 text</div>
        <button type="button" onclick="slideToNext()">Next</button>
    </div>
</body>

票数 2
EN

Stack Overflow用户

发布于 2015-01-02 10:44:11

是。获取ID作为一个数字,并增加它:

代码语言:javascript
复制
var num = +pageid[5];
if (num < 7) {
    return $('#page-'+(num+1));
}
return $('#page-1');
票数 0
EN

Stack Overflow用户

发布于 2015-01-02 10:44:38

如果只有7页,你不能循环它,比如:

代码语言:javascript
复制
for(var i=0;i<=7;i++){
   if (pageid == "page-"+i) {
      return $('#page-'+i);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27740783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档