通过 onClick 将多个值传递到一个变量或数组中

Pass multiple values through onClick into one variable or array

所以我已经很努力地尝试过了,但还是想不通,

我有一个这样的按钮

<button onclick="signUp(document.getElementById('username').value,document.getElementById('email').value)">Sign up</button>

我想将它从某些输入请求的值传递到变量或变量数组中,这样我就可以像这样处理它们(示例)

var signUp = function(e){
    alert(e);
}

(这只是简化但它证明了我的观点!) 有谁知道如何做到这一点,我一直很难搞清楚!

提前致谢,Magn0053

您可以用 { } 括起来将它们作为对象传递,或者用 [ ] 括起来将它们作为数组传递。但是,您所有的参数都是文档值,您的函数可以自己引用它们。

您可以采纳@adeneo 的想法,或者像这样将它们发送到数组中

signUp([document.getElementById('username').value, 
    document.getElementById('email').value])

基本解决方案

最基本的修改是在传递给 signUp 的值周围使用 []

var signUp = function(e) {
  alert ("username:" + e[0]);
  alert ("email:" + e[1]);
}
<input type="text" id="username">
<input type="text" id="email">
<button onclick="signUp([document.getElementById('username').value,document.getElementById('email').value])" id="submit">Sign up</button>

最佳实践

你真的不想在你的 DOM 中使用 javascript 所以首先修改你的 signUp 函数:

signUp = function() {
    var username = document.getElementById('username').value;
    var email = document.getElementById('email').value;
}

最后,从 HTML 中完全删除 onclick 并将其替换为 javascript:

document.getElementById('submit').onclick=signUp;

var signUp = function() {
  var username = document.getElementById('username').value;
  var email = document.getElementById('email').value;
  alert("username:" + username);
  alert("email:" + email);
}

document.getElementById('submit').onclick = signUp;
console.log("fred");
<input type="text" id="username">
<input type="text" id="email">
<button id="submit">Sign up</button>

您可以这样实现:

<button onclick="signUp({username:document.getElementById('username').value,email:document.getElementById('email').value})">Sign up</button>

在 js 中,您可以像这样访问它们:

var signUp = function(e){
    console.log(e.username, e.email);
}