IE8 |不是对象错误

时间:2012-02-10 21:45:59

标签: javascript internet-explorer-8

在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

for in vs. for

2 个答案:

答案 0 :(得分:1)

要开始调试,请在相关位置使用console.log(this.text_array);

我只能假设它是由浏览器未设置this引起的。在这种情况下,请使用checkEmpty启动var that = this;功能,然后使用that代替this

答案 1 :(得分:1)

结束使用

  

的document.getElementById()

表单访问是解决问题的快速解决方案。没有时间根据建议进一步排除故障。