2015-07-03 78 views
-1

我不善于用JS和我需要用一个漂亮的按钮,我从这里得到:http://codepen.io/rikschennink/pen/lEuLD/传递参数的功能(E)

总之,在HTML,我有:

<button data-label="click here!"></button> 

并在脚本中:

var loading = function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    e.target.classList.add('loading'); 
    e.target.setAttribute('disabled', 'disabled'); 
    setTimeout(function() { 
     e.target.classList.remove('loading'); 
     e.target.removeAttribute('disabled'); 
    }, 1500); 
}; 


var btns = document.querySelectorAll('button'); 
for (var i = btns.length - 1; i >= 0; i--) { 
    btns[i].addEventListener('click', loading); 
} 

据我所知,当页面加载时,事件监听器被添加和函数(e)在点击执行。我需要的是能够调用另一个函数并且在函数(e)被执行之后将参数传递给它,这将完成真正的工作。我怎样才能做到这一点?

换句话说,而不具有花式按钮,我通常能够通过使用调用一个函数:

<button onclick="functionName(id)"; data-label="click here!"></button> 

我需要能够花式按钮之后调用的函数使用functionName(ID)东西做它的工作!

我知道这可能很简单,但我仍然无法做到。

谢谢!

+0

添加它在加载函数结束? – Shilly

回答

1

,你可以添加它的click回调结束后:

var loading = function (e) { 
    e.preventDefault(); 
    e.stopPropagation(); 
    e.target.classList.add('loading'); 
    e.target.setAttribute('disabled', 'disabled'); 
    setTimeout(function() { 
     e.target.classList.remove('loading'); 
     e.target.removeAttribute('disabled'); 

     functionName(); //CALL YOU FUNCTION HERE 
    }, 1500); 
}; 
+0

谢谢,这就是我所需要的。我在“...... 1500”之后补丁;“ :/ – RonaDona

0

你可以通过对象的事件处理程序。

这里是的jsfiddle例如:

https://jsfiddle.net/csLhymtz/

function MyObject (myTextArgument) { 
    this.myTextArgument = myTextArgument; 
} 

MyObject.prototype.handleEvent = function (event) { 
    if (event.type === "click") { 
     this.clickHandler(); 
    } 
} 

MyObject.prototype.clickHandler = function() { 
    alert(this.myTextArgument); 
} 

var myObject = new MyObject ("i have been clicked"); 
var hello = new MyObject ("hello world"); 

$("#myButton")[0].addEventListener("click", myObject, false); 
$("#secondButton")[0].addEventListener("click", hello, false); 

您可以将处理程序按钮并作为第二个参数传递JavaScriptObject。

此类对象然后将事件传递给称为handleEvent的函数。

在那里你可以检查你得到什么类型的事件,并取决于执行适当的事件处理程序。您可以使用所需的所有参数创建对象,并在事件上访问它们。

+0

似乎是一个超过顶部的解决方案,当问题是有效的“我在哪里调用一个函数,当前一个已经完成” – atmd

+0

哦,太好了,太集中于传递参数,事件处理程序。 –