JavaScript onclick事件在没有任何单击的情况下触发

时间:2013-12-19 11:32:06

标签: javascript html javascript-events

我正在尝试清理元素的网址,并且每件事情都有效,但onclick事件直接在页面加载时触发,但在我点击时却没有。我该如何解决这个问题。

HTML:     今天通话清单     

JS:

var buttons = document.querySelectorAll('.button');
var reset = document.querySelector('.reset');

function forEach(array, action) {
  for (var i = 0; i < array.length; i++) {
    action(array[i])
  };
}

function clear_url_parameters(element) {

  if (!element)
    return false;
  var element_url = element.getAttribute('href');

  var split_url = element_url.split("?");

  var queries = split_url[1].split("&");

  var new_queries = [];

  for (var i = 0; i < queries.length; i++) {
    query = queries[i].split("=");
    new_queries.push(query[0] + "=");
  }

  cleared_url = split_url[0] + new_queries.join('');

  element.setAttribute('href', cleared_url);

}

reset.addEventListener('click', forEach(buttons, clear_url_parameters));

Demo on jsfiddle

由于

2 个答案:

答案 0 :(得分:1)

您正在将执行函数forEach的结果传递给您的事件侦听器。

试试这个:

reset.addEventListener('click', function () { forEach(buttons, clear_url_parameters); } );

答案 1 :(得分:0)

更改

reset.addEventListener('click', forEach(buttons, clear_url_parameters));

reset.addEventListener('click', function(){
    forEach(buttons, clear_url_parameters)
});

因为已传递给addEventListener的参数已被调用。