Javascript Can';似乎没有办法';另一种方法中的s值 //表单处理程序 var form=document.getElementsByName('contact-form')[0]; var errDis=document.getElementById('err-dis'); form.onsubmit=function() { var-err=false; var ele=形式元素; 对于(var i=0;i
您在全局范围内定义了方法,因此Javascript Can';似乎没有办法';另一种方法中的s值 //表单处理程序 var form=document.getElementsByName('contact-form')[0]; var errDis=document.getElementById('err-dis'); form.onsubmit=function() { var-err=false; var ele=形式元素; 对于(var i=0;i,javascript,object,Javascript,Object,您在全局范围内定义了方法,因此getQuery()方法中的this关键字指向全局对象(浏览器中的窗口) 您需要将该方法声明为表单构造函数的一部分: //form handler var form=document.getElementsByName('contact-form')[0]; var errDis=document.getElementById('err-dis'); form.onsubmit=function() { var err=false; var ele
getQuery()
方法中的this
关键字指向全局对象(浏览器中的窗口
)
您需要将该方法声明为表单
构造函数的一部分:
//form handler
var form=document.getElementsByName('contact-form')[0];
var errDis=document.getElementById('err-dis');
form.onsubmit=function()
{
var err=false;
var ele=form.elements;
for(var i=0;i<ele.length;i++)
{
if(ele[i].className.indexOf('verified')==-1)
{
ele[i].errBlink();
err=true;
continue;
}
if(ele[i].id=='mailer_email')
{
//console.log(ele[i].value);
}
}
if(!err)
{
var conForm=new Form(form);
conForm.submit;
}
else
{
errDis.innerHTML="Submit Again With Correct And Proper Information";
}
return false;
}
//Form Object
Object.size=function(obj)
{
var size=0;
for(var key in obj)
{
if(obj.hasOwnProperty(key)) size++;
}
return size;
};
var Form=function(form)
{
this.form=form;
this.values=getFormValues();
this.queryString=getQuery();
this.submit=console.log(this.queryString);//for test
}
//returns associative array of name=value as key=pair value where name is value of name attribute
function getFormValues()
{
var vallArr=new Array();
var form_ele=this.form.elements;
for(var i=0;i<form_ele.length;i++)
{
var ele=form_ele[i];
vallArr[ele.name]=ele.value.trim();
}
return vallArr;
}
function getQuery()
{
var valArr=this.values;
console.log(this.values);
var queryStr='';
var len=Object.size(this.values);
var i=0;
for(var key in this.values)
{
queryStr+=key+'='+this.values[key];
if(i<(len-1)) queryStr+='&';
i++;
}
return queryStr;
}
我建议您进一步研究javascript中的原型:
Form()
?更改this.queryString=getQuery();
tothis.queryString=getQuery;
是的,这可能不起作用,但现在它只是返回函数itself@hengecyche这是因为您在全局范围内定义了var表单
。因此此.form
不是引用表单构造函数的表单对象,而是引用全局定义的var表单
当我这样做的时候。querystring=function(){}像这个console.log返回的函数querystring()@hengecyche这是因为您将函数分配给了表单
实例的成员。当@Alexander提到这样做是为了解决您的问题时,他的意思是您调用this.queryString
而不是getQuery
。
Form.prototype.getQuery = function () {
// ...place your logic here...
}