0

我在一页中有两个 div(div A 和 div B),默认情况下,Div A 设置为显示块,Div B 设置为无显示。为了让用户登陆这个特定页面,他必须点击对话框中的链接。像这样:

<div id"dialog-box">

  <a href="/newpage.html" class="firstlink"> First Link </a>

  <a href="/newpage.html" class="secondlink"> Second Link </a>

</div>

<div class="newpage">

   <div class="divA" style="display:block">

   </div>

   <div class="divB" style="display:none">

   </div>

</div>

我想要实现的是这样的:

$(".firstlink").click(function(){
   $(".divA").css("display","none");
   $(".divB").css("display","block");
});

$(".secondlink").click(function(){
   $(".divA").css("display","block");
   $(".divB").css("display","none");
});

但上述内容当然行不通,因为 divA 和 divB 在不同的页面中......而且我不想在这个小任务中使用 cookie。

4

5 回答 5

1

用这个

<a href="/newpage.html?b=firstlink" class="firstlink"> First Link </a>

  <a href="/newpage.html?b=secondlink" class="secondlink"> Second Link </a>

并接收另一页

<?php $link=$_REQUEST['b']; ?>

并使用它

<?php if($link=='firstlink'){ ?>
$(".firstlink").click(function(){
   $(".divA").css("display","none");
   $(".divB").css("display","block");
});
<?php
}
if($link=='secondlink'){
?>
$(".secondlink").click(function(){
   $(".divA").css("display","block");
   $(".divB").css("display","none");
});
<?php
}
?>
于 2013-08-21T04:28:18.177 回答
1

我会在<a>href 属性的查询字符串中传递所需的数据。所以我将 HTML 更改为:

<a href="/newpage.html?link=firstlink" class="firstlink"> First Link </a>

<a href="/newpage.html?link=secondlink" class="secondlink"> Second Link </a>

然后,在你的newpage.html,我会有这样的代码:

(function () {
    "use strict";

    /* Parse querystring */
    var displayMap = {
            firstlink: ".divA",
            secondlink: ".divB"
        },
        qs, pairs, split, i, pair,
        queryString = {};

    qs = location.search;
    if (qs) {
        pairs = qs.split("&");
        for (i = 0; i < pairs.length; i++) {
            pair = pairs[i];
            split = pair.split("=");
            queryString[decodeURIComponent(split[0])] = decodeURIComponent(split[1]);
        }
    }
    /* End Parse querystring */

    window.onload = function () {
        var linkPassed, link;
        linkPassed = queryString["link"];
        if (linkPassed) {
            for (link in displayMap) {
                if (link === linkPassed) {
                    $(displayMap[link]).hide();
                } else {
                    $(displayMap[link]).show();
                }
            }
        }
    };
}());

它查看 之后的 URL ?,将其拆分"&"(并循环对),然后是"=". 如果键是"link",然后继续查看displayMap以查看 URL 中的值在此页面上转换为什么......并适当地显示/隐藏。

我确信有一种更优雅的方式来处理这个问题,但我只是想解释一下这种方法。

于 2013-08-21T04:31:24.227 回答
0

QueryString如果您想从上一页获取详细信息,您可以。

第一个链接 url 将是"page1.html?clickedLink=page1Link1",第二个链接 url 将是 " page1.html?clickedLink=page1Link2"

现在在您的目标页面上,您可以检查QueryString 以验证两个链接中的哪一个将您带到此页面。

于 2013-08-21T04:25:13.307 回答
0

您可以在指向第二页的链接中包含请求参数。在第二个页面上,您将使用 JavaScript 获取参数的值,该值将对应于单击的链接。

将您的链接更改为类似的内容。

<a href="/newpage.html?link=1" class="firstlink"> First Link </a>
<a href="/newpage.html?link=2" class="secondlink"> Second Link </a>

在您的第二个页面上,使用这样的函数来获取 URL 参数。http://jquerybyexample.blogspot.com/2012/06/get-url-parameters-using-jquery.html

function GetURLParameter(sParam)
{
    var sPageURL = window.location.search.substring(1);
    var sURLVariables = sPageURL.split('&');
    for (var i = 0; i < sURLVariables.length; i++) 
    {
        var sParameterName = sURLVariables[i].split('=');
        if (sParameterName[0] == sParam) 
        {
            return sParameterName[1];
        }
    }
}​

使用上述功能

if (GetURLParameter('link') === '1') {
   $(".divA").css("display","none");
   $(".divB").css("display","block");
} else {
   $(".divA").css("display","block");
   $(".divB").css("display","none");
}
于 2013-08-21T04:34:40.187 回答
0

如果您不想使用 cookie,则必须通过 url 参数传递值。

下面的函数将帮助您获取参数,

function getParameter(param) {
                var val = document.URL;
                var url = val.substr(val.indexOf(param))  
                var n=parseInt(url.replace(param+"=",""));
                alert(n+1); 
}
getParameter("page");

http://www.example.com/newpage.html?page=firstlink

我希望这能帮到您。

于 2013-08-21T04:46:07.223 回答