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

document.body.removeChild


babaloricha

Pergunta

bom dia!

estou tentado fazer um script que cria 2 divs 1 que comtem uma figura(um mapa pra ser mais preciso)

e outra em baixo que é tramsparente. mas esotu com problemas para fazer esse script funcionar no ie.

1º problema no ie quando se clica no x a div não e removida.

2º problema quando coloco a pagina que tem a funcao de um iframe o script nem cria a div e da o erro de argumento invalido.

o codigo e esse!

function criaDivMapa(map){
    //cria div cortina
    cortina=document.createElement("div");
    cortina.setAttribute("id","cortina");
    cortinaTitulo = document.createElement("div");
    cortinaTitulo.setAttribute("id","cortinaTitulo");
    fecha = document.createElement("span");
    fecha.setAttribute("id","fecha");
    fecha.setAttribute("onclick","fechaMapa()");
    divAd = document.createElement("div");
    divAd.setAttribute("id","divAd");
    fecha.appendChild(document.createTextNode("X"));
    cortinaTitulo.appendChild(fecha);
    cortina.appendChild(cortinaTitulo);
    cortina.appendChild(divAd);
    // insere a div cortina  na tela
    document.body.appendChild(cortina);
    cortina.style.left = ((screen.width - cortina.clientWidth)/2)+"px";
    cortina.style.top = ((screen.height - cortina.clientHeight)/2)+"px";
    //cria a div do mapa
    E=document.createElement("div");
    E.setAttribute("id","mapa");
    // cria a imagem do mapa
    mapa=document.createElement("img");
    mapa.setAttribute("src",map+".gif");
    // insere o mapa na div
    E.appendChild(mapa);
    //insere a div no body
    document.body.appendChild(E);
    //posiciona a div no meio da tela
    mapaleft=eval(cortina.style.left.substring(0,cortina.style.left.length -2))+((cortina.clientWidth-E.clientWidth)/2)+"px";
    mapatop=((screen.height - E.clientHeight)/2)+"px";
    E.style.top=mapatop;
    E.style.left=mapaleft;
    
}

function fechaMapa(){
    janela = document.getElementById("cortina");
    mapa = document.getElementById("mapa");
    document.body.removeChild(janela);
    document.body.removeChild(mapa);
}
e o css obs: eu sei que a traparencia so vai funcionar no mozila!
<style type="text/css">
#mapa{
    position:absolute;
}
#cortina{
    position:absolute;
    -moz-opacity: 0.5;
    width:800px;
    border:2px solid black;
    padding:0px;
    background-color:#000000;
    left:100px;
}

#cortinaTitulo{
    font-size:24px;
    height:26px;
    background-color:#006600;
    line-height:26px;
}

#fecha{
float:right;
font-size:24px;
padding-right:10px;
}

#divAd{
height:600px;
}
</style>
a pagina
<body bgcolor="#d6fccd">
<input type="button" onclick="criaDivMapa('mapashow');" value="Showroow" />
<input type="button" onclick="criaDivMapa('mapfab');" value="fabrica" />
</body>

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

Não fecha no iE porque o ie não vê o onclick como um atributo, mas como um evento. Engraçado que falam mal do iE pra tudo, mas em alguns casos ele é muito mais lógico. Esse é um exemplo.

Para você adcionar o evento onclick basta usar:

fecha.attachEvent("onclick", fechaMapa)
No FF ele vai funcionar bem como um atributo, mas se quiser adcionar evento, como fez no ie, o código é :
fecha.addEventListener("click", fechaMapa, true)
Agora, momento meu, que raio de click é esse? Isso não é evento....onclick é evento. Dizem que iE é uma droga.....Eu acho os dois uma b..... Agora...
2º problema quando coloco a pagina que tem a funcao de um iframe o script nem cria a div e da o erro de argumento invalido.

Embora seu código seja claro como agua limpa para mim, seu português foi indecifrável. Eu entendi que colocou a página, que está fazendo o efeito, em um iframe. Nesse caso, não haveria mudanças e o script funcionaria perfeitamente.

Não vou tentar decifrar o que quis dizer, um português claro por favor.

Link para o comentário
Compartilhar em outros sites

  • 0

PORTUGUES CLARO!

bom você já percebeu qu oque eu quero fzer e tipo um pop up.

mas a div tem que aparecer na janela pai da janela que tem a funcao.

pra fazer isso basta mudar apenas 2 linhas do codigo

parent.document.body.appendChild(cortina);
e
parent.document.body.appendChild(E);
fazendo essa alteração a as divs aparecem na janela pai. isso no ff mas no ie não, porque era exibido o erro "argumento invalido" mas de acordo com o seu post o argumeto deve ser o atributo que pro ie e evento! vou mudar pra ver se da tudo certo. obrigado! (algumas horas depois) modifiquei o a funcao como você me indicou mas não usei o listener, estou estudando os evento pra ver como fazer corretamente. Com a modificacao que fiz . trocando setAttribute por
navegador = verificaNav();
    if(navegador == 'IE'){
        fecha.attachEvent("onclick", fechaMapa);
    }else{
        fecha.setAttribute("onclick","fechaMapa()");
    }

funcionou no ie, mas so se a função for executada na propria pagina , porque ao tentar executar a funcao de criar a div na janela pai,o erro e o mesmo "argumento invalido" bem na linha que tem o parent.document.body.

Editado por babaloricha
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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...