Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2009, 02:00
Интересующийся
Отправить личное сообщение для Papa Посмотреть профиль Найти все сообщения от Papa
 
Регистрация: 16.12.2009
Сообщений: 19

Где ошибка? нужна помощь
Есть класс, но почемуто не видит this... ??
Ошибка: this.check is not a function
function CheckField(f) {
	this.noCheck = new Array();
	this.inputs = f.getElementsByTagName('input');
	this.textareas = f.getElementsByTagName('textarea');
	function isCheck(elem) {
		if(elem.indexOf('check') != -1) return true;
		return false;
	}
	this.check = function() {
		if(noCheck.length > 0) {
			notice(noCheck, '#b6b6b6');
			noCheck.length = 0;
		}		
		if(inputs.length > 0) {
			for(var i = 0; i < inputs.length; i++) {
				if(inputs[i].getAttribute('type') == 'text' && isCheck(inputs[i].id)) {					
					if(inputs[i].value == '') noCheck.push(inputs[i].id);				
				}
			}			
		}
		if(textareas.length > 0) {
			for(var i = 0; i < textareas.length; i++) {
				if(isCheck(textareas[i].id)) {					
					if(textareas[i].value == '') noCheck.push(textareas[i].id);				
				}
			}
		}
		if(noCheck.length == 0) return true;
		else {
			notice(noCheck, 'red');
			return false;
		}
	}
	this.notice = function(f, c) {	
		for(var i in f) {
			document.getElementById(f[i].substr(0, f[i].indexOf('_'))+'_caption').style.color = c;
			document.getElementById(f[i]).style.border = '1px solid '+c;
		}		
	}	
	f.onsubmit = function() {return this.check();}
}
var cf = new CheckField(document.forms[0]);

Последний раз редактировалось Papa, 19.12.2009 в 02:02.
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2009, 03:16
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

и не будет видеть. в контесте CheckField this = новый обьект, а не на f. А в контексте onsubmit, this=f

http://javascript.ru/tutorial/object
подробно по твоей части http://javascript.ru/tutorial/object/thiskeyword

function CheckField(f) {
    f.noCheck = new Array();
    f.inputs = f.getElementsByTagName('input');
    f.textareas = f.getElementsByTagName('textarea');
    f.isCheck = function(elem) {
        if(elem.indexOf('check') != -1) return true;
        return false;
    }
    f.check = function() {

        if(noCheck.length > 0) {
            notice(noCheck, '#b6b6b6');
            noCheck.length = 0;
        }        
        if(inputs.length > 0) {
            for(var i = 0; i < inputs.length; i++) {
                if(inputs[i].getAttribute('type') == 'text' && isCheck(inputs[i].id)) {                    
                    if(inputs[i].value == '') noCheck.push(inputs[i].id);                
                }
            }            
        }
        if(textareas.length > 0) {
            for(var i = 0; i < textareas.length; i++) {
                if(isCheck(textareas[i].id)) {                    
                    if(textareas[i].value == '') noCheck.push(textareas[i].id);                
                }
            }
        }
        if(noCheck.length == 0) return true;
        else {
            notice(noCheck, 'red');
            return false;
        }
    }
    this.notice = function(f, c) {    
        for(var i in f) {
            document.getElementById(f[i].substr(0, f[i].indexOf('_'))+'_caption').style.color = c;
            document.getElementById(f[i]).style.border = '1px solid '+c;
        }        
    }    
    f.onsubmit = function() {return this.check();}
}
var cf = new CheckField(document.forms[0]);


правда не помню сработает такое в контексте check() this=f, схавает это браузер?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
нужна помощь в JavaScript михаил Общие вопросы Javascript 26 30.10.2013 12:07
Где ошибка? gogi Общие вопросы Javascript 8 04.02.2009 12:21
Кроссдоменный GET запрос. Нужна помощь! notxcain AJAX и COMET 4 07.12.2008 20:55
Нужна помощь в завершении скрипта - если конечно не трудно. Rush Общие вопросы Javascript 11 18.10.2008 15:06
Срочно нужна помощь Гость Общие вопросы Javascript 2 02.09.2008 14:13