0

我的目标是将某个页面中链接的总点击量存储到一个变量中,并在用户退出页面时调用该变量。这会是正确的做法吗?

window.onunload = function(){
    alert("Total Links Clicked:" + clicks(););
}

var clicks = function(){
    var clickArray = [];
    var getLinks = document.getElementsByTagName(A);

    var clickValue = getLinks.onclick = function() {
    clickArray.push("1");
    }

    var totalClicks = clickArray.length;

    return totalClicks; 
}
4

3 回答 3

1

由于以下几个原因,您的代码将无法工作:

  • 您在函数中绑定点击处理程序,clicks()并且在页面卸载之前不要调用clicks(),此时处理任何点击都为时已晚。您需要在页面加载时绑定点击处理程序。
  • 您不能.onclick在元素列表getLinks上进行设置,这是给定变量的结果getElementsByTagName()(获取元素而不是获取元素)。
  • 您将未声明的变量传递AgetElementsByTagName(); 你应该传递字符串"a"
  • 您在alert()' 的结尾处有一个分号),这是一个语法错误。

你可以尝试这样的事情:

window.onload = function() {
    var clicks = 0;

    window.onunload = function(){
        alert("Total Links Clicked:" + clicks);
    }

    function clicked() {
         clicks++;
    }

    var getLinks = document.getElementsByTagName("a");    
    for (var i = 0; i < getLinks.length; i++)
        getLinks[i].onclick = clicked;
};

请注意,浏览器可能会alert()在卸载事件期间阻止 an,但如果您使用console.log()它,您会看到它clicks具有正确的值。

另请注意,单击指向另一个页面的链接当然会导致卸载,因此如果您在当前页面中有链接,则点击计数只会超过 1。

演示:http: //jsfiddle.net/A3bkT/1/

于 2013-08-04T02:38:03.177 回答
0

绑定一个全局事件监听器并将计数存储为sessionStorage

var clicks = 0;

document.addEventListener('click', function(event) {
    if (event.target.nodeName == 'A') {
        window.sessionStorage.setItem('clicks', ++clicks);
    }
}, false);
于 2013-08-04T02:50:06.007 回答
0

你可以使用sessionStorageor localStorage

if(typeof(Storage)!=="undefined")
{
   // store the clicks here
   sessionStorage.numClicks = value;
}

并在此处阅读有关这两个的更多信息:http: //www.w3schools.com/html/html5_webstorage.asp

于 2013-08-04T02:35:53.853 回答