访问表单提交上的对象属性(普通javascript)

访问表单提交上的对象属性(普通javascript),javascript,forms,Javascript,Forms,我决定回去重新学习vanilla js,因为我一直依赖jquery 我想做一些简单的食物订单 我的问题是,在我的submit方法中,“this”将引用正在提交的表单,而不是我的placeOrder对象 提交订单时,我希望将其推送到缓存dom中的订单数组中。显然,它不能在表单对象上使用push方法 有人能就如何进行这项工作提供建议吗 (function () { var placeOrder = { init: function() { this.cacheDom(); th

我决定回去重新学习vanilla js,因为我一直依赖jquery

我想做一些简单的食物订单

我的问题是,在我的submit方法中,“this”将引用正在提交的表单,而不是我的placeOrder对象

提交订单时,我希望将其推送到缓存dom中的订单数组中。显然,它不能在表单对象上使用push方法

有人能就如何进行这项工作提供建议吗

(function () {

var placeOrder = {
  init: function() {
    this.cacheDom();
    this.bindEvents();
  },
  cacheDom : function() {
    this.orderForm = document.getElementById('place-order-form');
    this.elements = this.orderForm.elements;
    this.orders = [];
  },
  bindEvents: function() {

    if(this.orderForm.addEventListener){
      this.orderForm.addEventListener("submit", this.submitOrder, false);  
    } else if (this.orderForm.attachEvent){
      this.orderForm.attachEvent('onsubmit', this.submitOrder);          
    }
  },

  submitOrder: function(e) {
    // this refers to the form being submitted
    e.preventDefault();
    var elements = this.elements;
    var order = {};

    for (var i = 0; i < elements.length; i++) {
      if (elements[i].tagName !== 'BUTTON') {
        if (elements[i].name === 'name') {
          order.name = elements[i].value;
        } else if (elements[i].name === 'food') {
          order.food = elements[i].value;
        }
      }
    }

    //this.orders.push(order);
    console.log(this);

  }

};

placeOrder.init();


}());
(函数(){
变量placeOrder={
init:function(){
this.cacheDom();
这是bindEvents();
},
cacheDom:function(){
this.orderForm=document.getElementById('place-order-form');
this.elements=this.orderForm.elements;
这个。订单=[];
},
bindEvents:function(){
if(this.orderForm.addEventListener){
this.orderForm.addEventListener(“提交”,this.submiter,false);
}else if(this.orderForm.attachEvent){
this.orderForm.attachEvent('onsubmit',this.submiter');
}
},
提交者:功能(e){
//这是指正在提交的表单
e、 预防默认值();
var元素=this.elements;
变量顺序={};
对于(var i=0;i
哦,我明白了。将其存储在事件侦听器之外,以将其作用域保持在表单之外。将此作为参数传递给submit方法有点混乱,但它正在工作,所以谢谢!