如何将onclick函数设置为多个元素?

时间:2014-12-22 19:41:19

标签: javascript html onclick setcookie

我正在尝试使用javascript为我的链接设置onclick属性。当用户点击链接时,我想设置一个cookie。

以下是设置Cookie的代码:

function setCookie(cookieName, cookieValue, cookiePath, cookieExpires){
    cookieValue = escape(cookieValue);
    if (cookieExpires == "") {
      var nowDate = new Date();
      nowDate.setMonth(nowDate.getMonth() + 6);
      cookieExpires = nowDate.toGMTString();
} if (cookiePath != "") {
  cookiePath = ";Path=" + cookiePath;
}
document.cookie = cookieName + "=" + cookieValue + 
  ";expires=" + cookieExpires + cookiePath;
}

function getCookieValue(cookieName)
{
var cookieValue = document.cookie;
var cookieStartsAt = cookieValue.indexOf(" " + cookieName + "=");
if (cookieStartsAt == -1)
{
  cookieStartsAt = cookieValue.indexOf(cookieName + "=");
}
if (cookieStartsAt == -1)
{
  cookieValue = null;
}
else
{
  cookieStartsAt = cookieValue.indexOf("=", cookieStartsAt) + 1;
  var cookieEndsAt = cookieValue.indexOf(";", cookieStartsAt);
  if (cookieEndsAt == -1)
  {
     cookieEndsAt = cookieValue.length;
  }
  cookieValue = unescape(cookieValue.substring(cookieStartsAt,
     cookieEndsAt));
}
return cookieValue;
}

现在这里是设置onclick功能的代码:

var elements = document.getElementsByTagName('a');
   for(var i = 0, len = elements.length; i < len; i++) {
        elements[i].onclick = setCookie("workshop", elements[i].getAttribute("name"), "", "");
   }

我想将cookie值设置为链接的名称。例如,如果我有一个链接<a href="#" name="test2">,我希望将cookie设置为&#34; test2&#34;。

但是,使用此代码,cookie值将继续成为最后一个&lt;的名称属性。 a&gt;页面上的标签(最后一个链接)。我希望每个链接都有自己的onclick功能;并非所有人都将cookie设置为相同的值。这样,一旦用户到达下一个屏幕,我就会知道他们点击了哪个链接到达那里。

任何帮助都非常受欢迎!谢天谢地!

1 个答案:

答案 0 :(得分:1)

使用addEventListener()函数代替onclick事件处理程序。这样的事情应该做你想做的事情:

var elements = document.getElementsByTagName('a');
for (var i = 0, len = elements.length; i < len; i++) {
  elements[i].addEventListener("click", function() {
    setCookie("workshop", this.getAttribute("name"), "", "");
  });
}
相关问题