【问题标题】:How to close onclick once per session?如何在每个会话中关闭一次 onclick?
【发布时间】:2019-09-25 01:12:26
【问题描述】:

我编写了这个简单的代码,用于在单击 X 后关闭 span,但每次刷新页面或转到另一个页面时都会加载。

function close() {
                var x = document.getElementById("header"); {
                        x.style.display = "none";
                }
        }

这是php中的代码:

<div id="header">
    <span style="vertical-align: middle; padding-top: 20px; font-weight: bold;"><a href=""><b></b></a></span>
    <div class="close-btn" style="position: absolute; display: inline-block; top: -4px; padding-right: 6px; color: #fff;"><span class="rwd-buttinette-icon rwd-icon-remove-circle-1" onclick="close()" style="float: right;"></span></div>
</div>

我已经尝试过使用 sessionStorage,但无法让它工作:

if (sessionStorage.getItem('Once') !== 'true') {
        function close() {
                var x = document.getElementById("header"); {
                        x.style.display = "none";
                }
        }
    sessionStorage.setItem('Once','true');
   }

我希望它只加载一次,直到它关闭并在该会话中保持关闭状态。有人可以帮我吗?

【问题讨论】:

  • 第一次关闭后可以add a cookie。在加载/显示 span 之前再次检查 cookie 值。
  • 我不太确定,但刷新您的页面是否也会终止您的会话?
  • 有点离题:在您的hinweisClose() 中,您检查标题是否已经关闭,然后打开它。我对此有两个问题: 1. 通常你点击 X 后无法打开某些东西。 2. 函数的名称是 'Close',它可以打开 的东西吗?那不计算。叫它“切换”不是更好吗?
  • 您可以使用localSession。 (如果您希望它在会话结束后保持关闭,请查看localStorage

标签: javascript html


【解决方案1】:

关闭span后添加一个cookie,例如:

document.cookie = "popup=closed";

然后你可以在再次显示span之前检查cookie,例如:

isClosed = document.cookie.replace(/(?:(?:^|.*;\s*)popup\s*\=\s*([^;]*).*$)|^.*$/, "$1") === "closed";
if(isClosed) {
    displayMySpan();
}

您可以阅读更多关于 JS cookie here.

对于基于 PHP 的解决方案,您仍然可以在关闭 span 后设置 cookie,例如:

document.cookie = "popup=closed; path=/";

然后在您的 PHP 代码中,您需要以下内容:

if (isset($_COOKIE['popup']) && $_COOKIE['popup'] === "closed") {
    //code to display div here
};

【讨论】:

  • 我不是很明白答案,我已经给你提供了上面的php代码。
  • 如果您需要通过 PHP 代码显示跨度,那么您需要阅读有关在 PHP 中设置 cookie 的信息。但是,我觉得您在页面加载时使用 javascript 显示跨度也很容易。
  • 另一个 question 关于在 PHP 中使用 JS 中设置的 cookie。因此,您仍然可以使用我的代码的第一行(如链接所述需要修改)来设置 cookie,并在您的 PHP 代码中访问它以检查是否需要显示跨度。
  • 它在 html 代码中显示,但在 php 文件中是我的意思,每个会话应该只加载一次,然后如果我关闭它,它应该保持关闭直到新会话,并且不会出现当我转到其他页面时再次。
  • 我不会为你写PHP,但你需要做的是:1.在JS中设置cookie,2.在PHP中读取,3.相应地显示span
猜你喜欢
  • 1970-01-01
  • 2018-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-24
  • 1970-01-01
相关资源
最近更新 更多