开发者

unable to display the last visited date

开发者 https://www.devze.com 2023-04-08 11:01 出处:网络
Following is the script that is meant to store the time,date the user last visited a webpage.But nothing happens when i run the HTML with the script.

Following is the script that is meant to store the time,date the user last visited a webpage.But nothing happens when i run the HTML with the script.

window.onload = init;

function init() {
var now = new Date();
    var last = new Date();
document.cookie = "username=" + ";path=/;expires=" + now.setMonth(now.getMonth() + 2).toGMTString() + ";lastVisit=" + last.toDateString();
var lastVisit = document.cookie.split("=");
document.getElementById("lastVisitedOn").value = lastVisit[6];

}

HTML

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="lastVisitTester.js">
</script>
</head>

<body>
<form>
&开发者_如何学Clt;label>Enter your name&nbsp;&nbsp;<input type="text" id="name_field" /></label> <br/>
<input type="submit" value="submit" />
</form>
<h1 id="lastVisitedOn"></h1>
</body>
</html>

Why is the time/date not getting set for the h tag ? What is wrong with the script ?


window.onload = function () {
    var now         = new Date(),
        expires     = now,
        lastVisit   = document.cookie.match(/lastVisit=([^;]+)/),
        userName    = 'somebody';
    // 1. You should set month in standalone way
    expires.setMonth(now.getMonth() + 2);
    // 2. For each cookie you set value individually: for username in 1st line, and for lastVisit in 2nd
    document.cookie = "username=" + userName  + ";path=/;expires=" + expires.toGMTString();
    document.cookie = "lastVisit=" + now.toDateString() + ";path=/;expires=" + expires.toGMTString();
    // 3. You should test and extract your cookie value BEFORE you set it (see above with cookie match)
    // 4. You should test if it's not null also
    if (null != lastVisit) {
        // 5. You should use innerHTML property for set content
        document.getElementById("lastVisitedOn").innerHTML = lastVisit[1];
    }

    // 6. But in general you should RTFM more :)
    // 7. ps: And also use some standard frameworks for this -- not manual raw JS
}


Well there are some problems in your code.

As others has mentioned before:

  1. The function "toGMTString()" is deprecated.

    Use "toLocaleString()" or "toUTCString()" instead of "toGMTString()" (see also https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date#toGMTString)

  2. You should use innerHTML and you had your index wrong.

  3. You cannot use document.cookie that way. Not sure way.

    Example:

    var now = new Date();
    var last = new Date();
    var cookieText = "username=" + ";path=/;expires=" + now.setMonth(now.getMonth() + 2).toLocaleString() + ";lastVisit=" + last.toDateString();
    
    document.cookie = cookieText;
    var lastVisit = cookieText .split("=");
    document.getElementById("lastVisitedOn").innerHTML = lastVisit[4];
    
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号