只运行一次javascript

mar*_*ius -2 javascript cookies

我只需运行一次javascript,保存到cookie,然后,当尝试执行功能时,检查是否保存了cookie,如果是,则不要触发功能.

我确定这个脚本有错误,因为它不能满足我的需要:

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);
}
}
Run Code Online (Sandbox Code Playgroud)

脚本触发更改"登出"中的"登录"的Html代码

<a href="login"  title="log in" class="login_button" id="tst">Login</a></span>
Run Code Online (Sandbox Code Playgroud)

Cookies脚本:

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;
}
Run Code Online (Sandbox Code Playgroud)

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

jed*_*rds 6

更改

if (prom = '0'){
Run Code Online (Sandbox Code Playgroud)

if (prom === '0'){
Run Code Online (Sandbox Code Playgroud)

(当然,假设getCookiesetCookiepersist类似于sessionStorage).

  • 你应该总是在javascript中使用身份运算符(`===`),而不是比较运算符(`==`).[相关问题](http://stackoverflow.com/questions/359494/javascript-vs-does-it-matter-which-equal-operator-i-use) (2认同)