Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

msmarins

[Resolvido] Conflito entre Funções - javascript

Recommended Posts

Boa tarde!

Tenho um arquivo javascript externo que deve chamar duas funções ao carregar a página. O problema é que uma função está anulando parte da outra. As duas funções chamam uma referência em ajax e é aí que não funciona. O ajax deve incluir uma pagina em um alvo.

 

Já pesquisei e tentei de todas a maneiras e não consigo resolver o problema.

 

Se alguem puder ajudar!

 

funções em conflito: pastoralDois e mostraSaleOnline

 

Segue o código:

 

window.onload = function (){
var past = new Array("dom_bosco", "ajs" , "p_sale");
for (var i=0;i<past.length;i++) {
	try {
		_$(past[i]).onclick = pastoral;
                       pastoralDois();
	}
	catch(e){

	};
}

mostraSaleOnline ();

}//FIM DA FUNNÇÃO ONLOAD

_$ = function(obj) {
return document.getElementById(obj);
}

ajax = function(url,idretorno) {
if (window.XMLHttpRequest) {
	requisicao = new XMLHttpRequest(); //Firefox
} else if (window.ActiveXObject) {
	requisicao = new ActiveXObject("Msxml2.XMLHTTP"); //Internet Explorer
} else {
		alert("Navegador não tem suporte");
}
requisicao.onreadystatechange = function () {
	if (requisicao.readyState == 4 && requisicao.status == 200) {
		_$(idretorno).innerHTML = requisicao.responseText;
	}
}
url+= (url.indexOf("?")==-1) ? "?" : "&";
url+= "sid="+parseInt(Math.random()*99999999);

requisicao.open("GET",url, true);
requisicao.send(null);
}

pastoral = function() {
	var box = this.id;
       switch (box){
               case "dom_bosco": 
                       var pagina = "dom_bosco.php"; 
                       var titulo = "Dom Bosco";

               break;
               case "ajs": 
                       var pagina = "ajs.php"; 
                       var titulo = "AJS";
               break;
               case "p_sale": 
                       var pagina = "point_sale.php"; 
                       var titulo = "Point Salê";
               break;
       }
//Criando um novo loop aqui para remover de todos antes de setar abaixo
var pastoral = new Array("dom_bosco", "ajs" , "p_sale");
for (var i=0;i<pastoral.length;i++) {
       var getAttr = _$(pastoral[i]).getAttribute('class');
       if( getAttr ){
       getAttr = getAttr.replace(/menu_corrente_educacao/gi, '');
       _$(pastoral[i]).setAttribute('class', getAttr );
       }
}
       if (titulo){
		var tit = _$("titulo_internas");
		tit.innerHTML = "";
		tit.innerHTML = titulo;
	}

	var tit = _$("titulo_internas");
	tit.innerHTML = titulo;

	var menu =_$(box);
       menu.className = 'menu_corrente_educacao';


       if (pagina){
	var alvo = _$("sessao_pastoral");
       alvo.innerHTML="";
	}

	ajax(pagina,"sessao_pastoral");
}


pastoralDois = function() {
	var box = _$("tt").value;
       switch (box){
               case "1": 
                       var pagina = "dom_bosco.php"; 
                       var titulo = "Dom Bosco";
					var men = "dom_bosco";
               break;
               case "2": 
                       var pagina = "ajs.php"; 
                       var titulo = "AJS";
					var men = "ajs";
               break;
               case "3": 
                       var pagina = "point_sale.php"; 

					var men = "p_sale";
               break;
       }

	var menu =_$(men);
       menu.className = 'menu_corrente_educacao';
	ajax(pagina,"sessao_pastoral");
}

mostraSaleOnline  = function() {
var s_line = _$("conteudo_area");
if (s_line != ""){
	if (s_line.innerHTML ==""){
	ajax("salesiano_online.php","conteudo_area");
	}
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpe a ignorância mas não sei o que isso significa. Mas tenho feito deste jeito em alguns projetos com esta função ajax que encontrei e vem dando cenrto.. .só que agora........!!

 

Desculpe a ignorância mas não sei o que isso significa. Mas tenho feito deste jeito em alguns projetos com esta função ajax que encontrei e vem dando cenrto.. .só que agora........!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi o que voçê está falando sobre o objeto.

Então criei outra função e resolveu o probelma.

Obrigado!

 

ajax2 = function(url,idretorno) {
if (window.XMLHttpRequest) {
	requisicao2 = new XMLHttpRequest(); //Firefox
} else if (window.ActiveXObject) {
	requisicao2 = new ActiveXObject("Msxml2.XMLHTTP"); //Internet Explorer
} else {
		alert("Navegador não tem suporte");
}
requisicao2.onreadystatechange = function () {
	if (requisicao2.readyState == 4 && requisicao2.status == 200) {
		_$(idretorno).innerHTML = requisicao2.responseText;
	}
}
url+= (url.indexOf("?")==-1) ? "?" : "&";
url+= "sid="+parseInt(Math.random()*99999999);

requisicao2.open("GET",url, true);
requisicao2.send(null);
}
mostraSaleOnline  = function() { // mostra os 3 salesiano on line do bloco areas
var s_line = _$("conteudo_area");
if (s_line != ""){
	if (s_line.innerHTML ==""){
	ajax2("salesiano_online.php","conteudo_area");
	}
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não precisava ter criado outra função, o problema está na forma que você utiliza a palavra chave var, ela serve para declarar a variável no escopo em que a palavra chave está, se ela não for usada, a variável vai ser buscada nos escopos superiores

 

ajax = function(url,idretorno) {
       var requisicao;
       if (window.XMLHttpRequest) {
               requisicao = new XMLHttpRequest(); //Firefox
       } else if (window.ActiveXObject) {
               requisicao = new ActiveXObject("Msxml2.XMLHTTP"); //Internet Explorer
       } else {
                       alert("Navegador não tem suporte");
       }
       requisicao.onreadystatechange = function () {
               if (requisicao.readyState == 4 && requisicao.status == 200) {
                       _$(idretorno).innerHTML = requisicao.responseText;
               }
       }
       url+= (url.indexOf("?")==-1) ? "?" : "&";
       url+= "sid="+parseInt(Math.random()*99999999);

       requisicao.open("GET",url, true);
       requisicao.send(null);
}

 

outro problema está aqui:

pastoralDois = function() {
               var box = _$("tt").value;
       switch (box){
               case "1": 
                       var pagina = "dom_bosco.php"; 
                       var titulo = "Dom Bosco";
                                               var men = "dom_bosco";
               break;
               case "2": 
                       var pagina = "ajs.php"; 
                       var titulo = "AJS";
                                               var men = "ajs";
               break;
               case "3": 
                       var pagina = "point_sale.php"; 

                                               var men = "p_sale";
               break;
       }

               var menu =_$(men);
       menu.className = 'menu_corrente_educacao';
               ajax(pagina,"sessao_pastoral");
}

 

Não sei como isso funcionou :P

você declarou as variáveis várias vezes dentro de switch e usou fora do switch...

 

O certo é:

pastoralDois = function() {
               var box = _$("tt").value, pagina, titulo, men;
       switch (box){
               case "1": 
                       pagina = "dom_bosco.php"; 
                       titulo = "Dom Bosco";
                                               men = "dom_bosco";
               break;
               case "2": 
                       pagina = "ajs.php"; 
                       titulo = "AJS";
                                               men = "ajs";
               break;
               case "3": 
                       pagina = "point_sale.php"; 

                                               men = "p_sale";
               break;
       }

               var menu =_$(men);
       menu.className = 'menu_corrente_educacao';
               ajax(pagina,"sessao_pastoral");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi a questão da declaração da variavel e já corrigi e voltei com uma função do ajax só.

Também corrigi a questão da variável fora do switch. Mas confesso que não entendi muito bem esta linha (var box = _$("tt").value, pagina, titulo, men;)... ela cria as variáveis box, pagina, titulo e men?

Seria mesma coisa de criar as outras variaveis separadamente?

Mas ficou perfeito. Muito obrigado mesmo!

 

 

Não precisava ter criado outra função, o problema está na forma que você utiliza a palavra chave var, ela serve para declarar a variável no escopo em que a palavra chave está, se ela não for usada, a variável vai ser buscada nos escopos superiores

 

ajax = function(url,idretorno) {
       var requisicao;
       if (window.XMLHttpRequest) {
               requisicao = new XMLHttpRequest(); //Firefox
       } else if (window.ActiveXObject) {
               requisicao = new ActiveXObject("Msxml2.XMLHTTP"); //Internet Explorer
       } else {
                       alert("Navegador não tem suporte");
       }
       requisicao.onreadystatechange = function () {
               if (requisicao.readyState == 4 && requisicao.status == 200) {
                       _$(idretorno).innerHTML = requisicao.responseText;
               }
       }
       url+= (url.indexOf("?")==-1) ? "?" : "&";
       url+= "sid="+parseInt(Math.random()*99999999);

       requisicao.open("GET",url, true);
       requisicao.send(null);
}

 

outro problema está aqui:

pastoralDois = function() {
               var box = _$("tt").value;
       switch (box){
               case "1": 
                       var pagina = "dom_bosco.php"; 
                       var titulo = "Dom Bosco";
                                               var men = "dom_bosco";
               break;
               case "2": 
                       var pagina = "ajs.php"; 
                       var titulo = "AJS";
                                               var men = "ajs";
               break;
               case "3": 
                       var pagina = "point_sale.php"; 

                                               var men = "p_sale";
               break;
       }

               var menu =_$(men);
       menu.className = 'menu_corrente_educacao';
               ajax(pagina,"sessao_pastoral");
}

 

Não sei como isso funcionou :P/>

você declarou as variáveis várias vezes dentro de switch e usou fora do switch...

 

O certo é:

pastoralDois = function() {
               var box = _$("tt").value, pagina, titulo, men;
       switch (box){
               case "1": 
                       pagina = "dom_bosco.php"; 
                       titulo = "Dom Bosco";
                                               men = "dom_bosco";
               break;
               case "2": 
                       pagina = "ajs.php"; 
                       titulo = "AJS";
                                               men = "ajs";
               break;
               case "3": 
                       pagina = "point_sale.php"; 

                                               men = "p_sale";
               break;
       }

               var menu =_$(men);
       menu.className = 'menu_corrente_educacao';
               ajax(pagina,"sessao_pastoral");
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente, a variável box foi declarada e inicializada, e as variáveis pagina, titulo, men foram apenas declaradas, a inicialização delas é opcional.

 

Ex:

var box = _$("tt").value, pagina, titulo = "Titulo Inicial", men;

 

é o mesmo que:

var box = _$("tt").value;
var pagina;
var titulo = "Titulo Inicial";
var men;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show de bola!

Ficarei mais atento as declarações de variaveis.

Mais uma vez agradeço atençaõ e presteza.

Abraço!

 

Exatamente, a variável box foi declarada e inicializada, e as variáveis pagina, titulo, men foram apenas declaradas, a inicialização delas é opcional.

 

Ex:

var box = _$("tt").value, pagina, titulo = "Titulo Inicial", men;

 

é o mesmo que:

var box = _$("tt").value;
var pagina;
var titulo = "Titulo Inicial";
var men;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.