Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido)Podem me ajudar com document getElementById?


jessepatricio

Pergunta

tenho esse codigo que funciona assim:

http://www.idealrepresentacoes.com.br/site/produtos.php

se Você selecionar um item do list box ele age corretamente, mas quando você vai selecionar outro item ele adiciona os valores, mas mmeu querer é que ele limpe a categoria quando for pedido outro item entederam????

se puderem me ajudar, eu agradeço.

podem entra em contatop pelo meu MSN:jeblk@hotmail.com.

function subcategorias(categoria_id)
{    
    ajax = false;
    if(window.XMLHttpRequest)
        ajax  = new XMLHttpRequest();
    else
        ajax = new ActiveXObject("Microsoft.XMLHTTP");
        
    if(ajax)
    {
        ajax.open('POST','ajax.php',true);
        ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
        ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
        ajax.setRequestHeader("Pragma", "no-cache");
        ajax.send('acao=subcategorias&valor='+categoria_id);
        
        ajax.onreadystatechange = function() 
        {
            if(ajax.readyState == 4)
            {
                if(ajax.status == 200)
                {
                    document.getElementById('conteudo').innerHTML = ajax.responseText;
                }
            }
        }            
    }
    else{
        alert('Este navegador não possui suporte a Ajax.');
    }
                
    return ajax;    
}

function lista_produtos(subcategoria_id)
{    
    ajax = false;
    if(window.XMLHttpRequest)
        ajax  = new XMLHttpRequest();
    else
        ajax = new ActiveXObject("Microsoft.XMLHTTP");
        
    if(ajax)
    {
        ajax.open('POST','ajax.php',true);
        ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
        ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
        ajax.setRequestHeader("Pragma", "no-cache");
        ajax.send('acao=lista_produtos&valor='+subcategoria_id);
        
        ajax.onreadystatechange = function() 
        {
            if(ajax.readyState == 4)
            {
                if(ajax.status == 200)
                {
                    document.getElementById('conteudo').innerHTML+= ajax.responseText;
                }
            }
        }            
    }
    else{
        alert('Este navegador não possui suporte a Ajax.');
    }
                
    return ajax;    
}

Editado por Jonathan Queiroz
Adcionar tag's (Jonathan)
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Cara, tenho uma observacao a fazer com relacao ao seu codigo. Que acha de bolar um sistema de fila para as suas requisicoes ajax? Da maneira como esta, você tem que instanciar um objeto XMLHttpRequest a cada nova requisicao em "paralelo". Da uma pesquisada sobre fila de requisicoes ajax.

O conteudo esta sendo concatenado ou melhor, não esta sendo tirado da tela quando seleciona o otro, porque você esta usando essa linha:

document.getElementById('conteudo').innerHTML+= ajax.responseText;
Esse += esta colocando o conteudo anterior mais o atual. Tenta usar esse novo code aki que fiz:
function subcategorias(categoria_id)
{
ajax = false;
if(window.XMLHttpRequest)
ajax = new XMLHttpRequest();
else
ajax = new ActiveXObject("Microsoft.XMLHTTP");

if(ajax)
{
ajax.open('POST','ajax.php',true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
ajax.setRequestHeader("Pragma", "no-cache");
ajax.send('acao=subcategorias&valor='+categoria_id);

ajax.onreadystatechange = function()
{
if(ajax.readyState == 4)
{
if(ajax.status == 200)
{
document.getElementById('conteudo').innerHTML = ajax.responseText;
var produtos = document.createElement("div");//criamos um novo div que recebera a lista de produtos
produtos.setAttribute("id","produtos");//aki setamos o id do div como produtos, para que na funcao lista_produtos() possamos pega-lo usando getElementById...
document.getElementById('conteudo').appendChild(produtos);//colocamos esse novo div criado dentro do div conteudo, obviamente, abaixo de tudo queestiver dentro desse div
}
}
}
}
else{
alert('Este navegador não possui suporte a Ajax.');
}

return ajax;
}

function lista_produtos(subcategoria_id)
{
ajax = false;
if(window.XMLHttpRequest)
ajax = new XMLHttpRequest();
else
ajax = new ActiveXObject("Microsoft.XMLHTTP");

if(ajax)
{
ajax.open('POST','ajax.php',true);
ajax.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
ajax.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate");
ajax.setRequestHeader("Cache-Control", "post-check=0, pre-check=0");
ajax.setRequestHeader("Pragma", "no-cache");
ajax.send('acao=lista_produtos&valor='+subcategoria_id);

ajax.onreadystatechange = function()
{
if(ajax.readyState == 4)
{
if(ajax.status == 200)
{
document.getElementById('produtos').innerHTML= ajax.responseText;//colocamos a lista de produtos dentro desse div que foi criado na requisicao anterior
}
}
}
}
else{
alert('Este navegador não possui suporte a Ajax.');
}

return ajax;
}

Foi simples o que fiz, apenas criei um novo div e coloquei ele dentro do div conteudo. Assim não tem mais que usar o +=...

Qualquer duvida so postar aew.

T+

Editado por Danilo Moraes
Link para o comentário
Compartilhar em outros sites

  • 0

Sei sim... É so adicionar o conteudo normalmente :P

Se tu quer adicionar conteudo usando getElementById, coloca os comandos abaixo do appendChild()...

tipo: document.getElementById("produtos").innerHTML = "algo";

Mas lembre-se que innerHTML não é aconselhado para inserir conteudo a não ser quando se trata do objeto XMLHttpRequest que ainda não foi padronizado pela W3C :P

Aconselho a criar textos e tags com createElement() e depois adiciona-los no div com appendChild().

Se tu me disser o que quer por nele, acho que posso ser mais específico.

T+ :P

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...