【问题标题】:run javascript only once [closed]只运行一次javascript [关闭]
【发布时间】:2013-04-06 14:43:33
【问题描述】:

我只需要运行一次javascript,保存到cookies,然后,当尝试执行函数时,检查cookies是否保存,如果是,不要触发函数。

我确定这个脚本有错误,因为它没有做我需要的事情:

var prom = getCookie('prom');
if (prom === null || prom === '0') 
{
if (document.getElementById('tst')){
    var str=document.getElementById("tst").innerHTML;
    var n=str.replace("Login","Logout");
    document.getElementById("tst").innerHTML=n;
    setCookie("prom",'1',1);
}
}

脚本触发更改“注销”中的“登录”的 HTML 代码

<a href="login"  title="log in" class="login_button" id="tst">Login</a></span>

Cookie 脚本:

function setCookie(c_name, value, exdays) {
    var exdate = new Date();
    if (exdays) exdate.setDate(exdate.getDate() + exdays);
    var c_value = escape(value) + ((exdays) ? '; expires=' + exdate.toUTCString() : '');
    document.cookie = c_name + "=" + c_value;
}

function getCookie(name) {
    var re = new RegExp(name + "=([^;,]+)");
    var value = re.exec(document.cookie);
    return (value !== null) ? unescape(value[1]) : null;
}

Jsfiddle 测试 if http://jsfiddle.net/8yZaP/11/

【问题讨论】:

  • getCookie() 保存到全局变量?

标签: javascript cookies


【解决方案1】:

改变

if (prom = '0'){

if (prom === '0'){

(当然,假设getCookiesetCookiesessionStorage 保持相似)。

【讨论】:

  • 您应该始终在 javascript 中使用标识运算符 (===),而不是比较运算符 (==)。 Related question
  • @jbabey,+1 好点——谢谢
  • 奇怪,现在它不会触发该功能。控制台错误:ReferenceError: "prom is not defined" if(prom === '0'){
  • 从您的编辑中,您需要将getCookie() 的返回值分配给某物:例如var prom = getCookie('prom');
  • 我做了修改。控制台上没有更多错误,但脚本仍然没有触发。同样在资源-Cookies-没有“舞会”的事件。如果我删除 if (prom === '0') 函数被执行。
猜你喜欢
  • 2021-05-06
  • 2015-12-21
  • 2018-07-06
  • 2012-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多