在IE8上(不在IE9或Safari上)我收到错误
this.text_array is null or not an object
这一行
`if( this.text_array[element].value === '' )`
这个对象 -
/**
* JClass - Text
*/
var Text = function( form_name )
{
this.text_array = document.forms[form_name].elements;
};
Text.prototype.patterns =
{
prefix_url: /^(http:)|(https:)\/\//,
url: /^.{1,2048}$/,
tweet: /^.{1,40}$/,
title: /^.{1,32}$/,
name: /^.{1,64}$/,
email: /^.{1,64}@.{1,255}$/,
pass: /^.{6,20}$/
};
Text.prototype.checkPattern = function( type )
{
return this.patterns[type].exec( this.text_array[type].value );
};
Text.prototype.checkUrlAdd = function( type )
{
return this.patterns[type].exec( this.text_array.url.value );
};
Text.prototype.checkSameEmail = function()
{
return ( (this.text_array.email.value) === (this.text_array.email1.value) );
};
Text.prototype.checkEmpty = function()
{
var element;
for ( element in this.text_array )
{
if( this.text_array[element].value === '' )
{
return 0;
}
}
return 1;
};
不确定从何处开始对此进行故障排除。我想我可以从硬编码元素对象开始......这将消除DOM Pull作为嫌疑人。我可以这样继续...但我现在没有IE8可用。试验和错误,除非有人有一点见解。
相关SO
答案 0 :(得分:1)
要开始调试,请在相关位置使用console.log(this.text_array);
。
我只能假设它是由浏览器未设置this
引起的。在这种情况下,请使用checkEmpty
启动var that = this;
功能,然后使用that
代替this
。
答案 1 :(得分:1)
结束使用
的document.getElementById()
表单访问是解决问题的快速解决方案。没有时间根据建议进一步排除故障。