2013-12-19 55 views
1

我试图清理元素的网址,每件事情都在起作用,但onclick事件直接在页面加载时触发,而不是当我点击时触发。我怎样才能解决这个问题。JavaScript 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

感谢

回答

1

你传入执行功能forEach到事件侦听器的结果。

试试这个:

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

变化

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

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

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

+0

感谢您的帮助和解释,我真的很感激 –