我的目标是将特定页面中链接的总点击次数存储到变量中,并在用户退出页面时调用该变量。这是一种正确的做法吗?
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;
}
答案 0 :(得分:1)
您的代码因多种原因无效:
clicks()
函数中的点击处理程序,并且在页面卸载之前不要调用clicks()
,此时处理任何点击都为时已晚。您需要在页面加载时绑定单击处理程序。.onclick
,这就是getLinks
变量的设置,它被设置为getElementsByTagName()
的结果(获取元素不是元素)。A
传递给getElementsByTagName()
;你应该传递字符串"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()
,但如果您使用console.log()
,则可以看到clicks
具有正确的值。
另请注意,当然单击指向其他页面的链接会导致卸载,因此如果您在当前页面中有链接,则点击次数将只会超过1次。
答案 1 :(得分:0)
您可以使用sessionStorage
或localStorage
。
if(typeof(Storage)!=="undefined")
{
// store the clicks here
sessionStorage.numClicks = value;
}
并在此处详细了解这两个:http://www.w3schools.com/html/html5_webstorage.asp
答案 2 :(得分:0)
绑定全局事件侦听器,并将计数存储为sessionStorage
:
var clicks = 0;
document.addEventListener('click', function(event) {
if (event.target.nodeName == 'A') {
window.sessionStorage.setItem('clicks', ++clicks);
}
}, false);