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