繁体   English   中英

是否可以通过遍历数组来填充Object实例?

[英]Is it possible to populate an Object instance by looping through an array?

我正在制作一个日记应用,每次在我的html表单上提交输入时,都需要创建一个对象实例。

我想创建一个循环,将结果中的输入转换为新Object实例中的值。 到目前为止,我的尝试为我提供了一个具有未定义值的实例。 这有可能吗?

results = []

function example(a, b){
    this.a = a;
    this.b = b;
}

function getElements(){
var a = document.getElementById("a").value;
var b = document.getElementById("b").value;
results.push(a,b)
}

我尝试循环创建示例的新实例

function createNewDay(){
    for (i = 0;i<results.length;i++){
    var x = new day([i])
    }
}

当我console.log =>示例{a:undefined,b:undefined}

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
  <input id="a" type="text">
  <input id="b" type="text">
  <button type="submit" id="submit">Submit</button>
  <button type="button" id="view">View results in console</button>
</body>
<script type="text/javascript">
var results = [];

function Example(a, b) {a
  this.a = a;
  this.b = b;
}

function getElements() {
 var a = document.getElementById('a').value;
 var b = document.getElementById('b').value;
 results.push(new Example(a, b));
}

function loopResults() {
  for (var i = 0; i < results.length; i++) {
    console.log(results[i]);
  }
}

document.getElementById('submit').addEventListener('click', getElements, false);
document.getElementById('view').addEventListener('click', loopResults, false);
</script>
</html>

演示: http//jsbin.com/jehupayomu/1/

所以...您可以使用jQuery:

var formDataObject = $("refer_to_form_by_id_or_name").serializeObject();

如此处所述:将表单数据序列化为JSON

您可以为此使用FormData这使其成为更通用的解决方案:

 var form = document.querySelector('form'); form.onsubmit = function () { var formdata = new FormData(this); var results = {}; for ([key, value] of formdata) { results[key] = value; } console.log(results); return false; // cancel submission }; 
 <form method="post" action=""> a: <input name="a" value=""><br> b: <input name="b" value=""><br> <input type="submit"> </form> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM