IE8 |Не ошибка объекта - PullRequest
3 голосов
/ 11 февраля 2012

На 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;
};

Не уверен, с чего начать устранение неполадок.Полагаю, я мог бы начать с жесткого кодирования объекта element ... что бы исключить DOM Pull как подозреваемого.Я мог бы продолжать в том же духе ... но сейчас у меня нет IE8.Метод проб и ошибок, если только у кого-то нет понимания.

Относительно SO

для против и для

Ответы [ 2 ]

1 голос
/ 12 августа 2012

Завершено использованием

document.getElementById ()

для доступа к форме в качестве быстрого решения для решения проблемы.Не было времени для устранения неполадок в соответствии с предложениями.

1 голос
/ 11 февраля 2012

Чтобы начать отладку, используйте console.log(this.text_array); в соответствующих местах.

Я могу только предположить, что это вызвано тем, что this неправильно настроен браузером. В этом случае запустите функцию checkEmpty с var that = this; и используйте that вместо this через нее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...