Jump to content


Photo

[resolvido] Instância De Função


  • Faça o login para participar
4 replies to this topic

#1 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 25/05/2009, 17:06

Tenho o seguinte ambiente:

Uma página de apresentação (.asp), e um script com funções (.js)
Na página de apresentação estou criando uma instância de uma
função que se encontra num outro arquivo (.js), ai ao tentar
utlilzar o método da função a mesma não é encontrada:
MostraDisciplinas' is undefined.
O estranho é que já tenho um mesmo caso que
funciona normalmente.

Página ASP:
function escolheDisc(div, periodo){		var disciplinas = new MostraDisciplinas(div, periodo);		disciplinas.abreDisciplinas();	};

Arquivo Js:
function MostraDisciplinas(div, periodo){		this.abreDisciplinas = function(){			var divAtual = 'disc'+ div.innerHTML.substr(0,1);			var divs = new Array('disc1', 'disc2', 'disc3', 'disc4', 'disc5', 'disc6', 'disc7', 'disc8');			var r = 1;			for (i = 0; i < divs.length; i++){				var divStyle = document.getElementById(divs[i]).style;				if (divAtual == divs[i])					divStyle.display = 'block';				else					divStyle.display = 'none';			}			acendeDivPai(periodo);		};		this.acendeDivPai = function(){			for (i = 0; i < 8; i++ ){				var divPai = document.getElementById('divPeriodo'+ (i+1));				if ((i+1) == periodo){					divPai.style.background = '#F2B34C';					divPai.onmouseout = function(){ alteraImg(this, "over"); };									}				else{					divPai.style.background = 'url("img/bg_disciplinas.gif")';					divPai.onmouseout = function (){ alteraImg(this, "out"); };				}			}		};	};

;-)

Edição feita por: Renan L. Queiroz, 26/05/2009, 10:17.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#2 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 25/05/2009, 17:23

se tem algum problema ai, acho que é porque vc esta usando uma variavel local, para instancia a classe, ai quando vc tenta usar o objeto, ela não existe pois o objeto não existe, pois acabou o escopo da variavel local.

Edição feita por: Édipo Costa Rebouças, 25/05/2009, 17:25.


#3 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 25/05/2009, 17:50

Vi o seguinte, ao colocar a função ("classe") no mesmo arquivo funcionou normalmente,
mas realmente acho estranho minha em minha outra funcionalidade funcionar da mesma
forma!
:blink:

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image


#4 Édipo Costa Rebouças

Édipo Costa Rebouças

    Veterano

  • Ex-Admins
  • 1079 posts
  • Sexo:Masculino
  • Localidade:Brasil - São Paulo

Posted 26/05/2009, 07:38

o que vc talvez esteja fazendo é errado alguma coisa na hora de importar o js da "classe", se você só vai usar o objeto dentro da função creio que não teria problema mesmo. vou fazer um teste hoje depois do meio dia. só me passa os parametros que eu deveria usar.

Edição feita por: Édipo Costa Rebouças, 26/05/2009, 07:38.


#5 Renan L. Queiroz

Renan L. Queiroz

    Mestre

  • Usuários
  • 690 posts
  • Sexo:Masculino
  • Localidade:Brasilia - DF

Posted 26/05/2009, 09:13

Posted Image

De acordo com a img:
div: são as div com conteúdo "Xº Periodo"
periodo: é o X de tal, onde ao ser verificado e comparado
abre a div correspondente das disciplinas.

Ai apartir da função "MostraDisciplinas" da para ter uma idéia certo?
Caso não posto aqui mais informações.

Valeu!

----------------

Rapáiz!! o Trem funcionou!! Cache saf#@*$!!
Segue script completo:

Página asp/html:
function escolheDisc(div, periodo){	var disciplinas = new MostraDisciplinas(div, periodo);	disciplinas.abreDisciplinas();};
Página js:
function MostraDisciplinas(div, periodo){	this.abreDisciplinas = function(){		var divAtual = 'disc'+ div.innerHTML.substr(0,1);		var divs = new Array('disc1', 'disc2', 'disc3', 'disc4', 'disc5', 'disc6', 'disc7', 'disc8');		var r = 1;		for (i = 0; i < divs.length; i++){			var divStyle = document.getElementById(divs[i]).style;			if (divAtual == divs[i])				divStyle.display = 'block';			else				divStyle.display = 'none';		}		this.acendeDivPai();	};	this.acendeDivPai = function(){		for (i = 0; i < 8; i++ ){			var divPai = document.getElementById('divPeriodo'+ (i+1));			if ((i+1) == periodo){				divPai.style.background = '#F2B34C';				divPai.onmouseout = function(){ alteraImg(this, "over"); };							}			else{				divPai.style.background = 'url("img/bg_disciplinas.gif")';				divPai.onmouseout = function (){ alteraImg(this, "out"); };			}		}	};		};
Ao acessar a "classe", estava dando erro tbm ao tentar executar:
acendeDivPai(); diretamente, ai alterei por this.acendeDivPai();!!

Valeu a força ai Édipo!!

Edição feita por: Renan L. Queiroz, 26/05/2009, 09:38.

Especialidade: Desenvolvimento e Banco de Dados.


Este post lhe ajudou? Agradeça: Posted Image





1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq