Eu sou um novato total. Alguém pode me dizer como remover um elemento HTML usando o Javascript original, não o jQuery.
index.html
<html>
<head>
<script type="text/javascript" src="myscripts.js" > </script>
<style>
#dummy {
min-width: 200px;
min-height: 200px;
max-width: 200px;
max-height: 200px;
background-color: #fff000;
}
</style>
</head>
<body>
<div id="dummy"></div>
<form>
<input type="submit" value="Remove DUMMY" onclick="removeDummy(); "/>
</form>
</body>
myscripts.js
function removeDummy() {
var elem = document.getElementById('dummy');
elem.parentNode.removeChild(elem);
}
O que acontece quando clico no botão enviar é que ele desaparece por um período muito curto e depois volta a aparecer imediatamente. Quero remover completamente o elemento quando clicar no botão.
javascript
html
Newbie Coder
fonte
fonte
Respostas:
O que está acontecendo é que o formulário está sendo enviado e, portanto, a página está sendo atualizada (com seu conteúdo original). Você está lidando com o
click
evento em um botão de envio.Se você deseja remover o elemento e não enviar o formulário, manipule o
submit
evento no formulário e retornefalse
do seu manipulador:HTML:
JavaScript:
Mas você não precisa (ou deseja) de um formulário para isso, não se seu único objetivo é remover a div fictícia. Em vez de:
HTML:
JavaScript:
No entanto , esse estilo de configurar manipuladores de eventos é antiquado. Você parece ter bons instintos, pois seu código JavaScript está em seu próprio arquivo e tal. O próximo passo é ir além e evitar o uso de
onXYZ
atributos para conectar manipuladores de eventos. Em vez disso, no seu JavaScript, você pode conectá-los da maneira mais recente (por volta do ano 2000):HTML:
JavaScript:
... chame
pageInit();
de umascript
tag no final da sua páginabody
(logo antes da</body>
tag de fechamento ) ou de dentro dowindow
load
evento, embora isso aconteça muito tarde no ciclo de carregamento da página e, portanto, geralmente não seja bom para conectar um evento manipuladores (isso acontece depois que todas as imagens finalmente foram carregadas, por exemplo).Observe que eu tive que lidar com algumas diferenças para lidar com as diferenças do navegador. Você provavelmente desejará uma função para conectar eventos, para não precisar repetir essa lógica todas as vezes. Ou considere usar uma biblioteca como jQuery , Prototype , YUI , Closure ou qualquer uma das várias outras para suavizar essas diferenças de navegador. É muito importante entender as coisas subjacentes, tanto em termos de JavaScript e DOM, mas as bibliotecas lidam com muitas inconsistências e também fornecem muitos utilitários úteis - como um meio de conectar manipuladores de eventos que lidam com diferenças do navegador. A maioria deles também fornece uma maneira de configurar uma função (como
pageInit
) para executar assim que o DOM estiver pronto para ser manipulado, muito antes dowindow
load
disparo.fonte
type="button"
ou coloque-oreturn false;
em sua função JSonxyz
propriedade no elemento) apenas permite um único manipulador e, se você atribuir à propriedade, substitua o que quer que estivesse lá, para que não funcione bem com outras pessoas. (continuação)Apenas faça isso
element.remove();
Experimente aqui
http://jsfiddle.net/4WGRP/
fonte
.remove()
Você deve usar input type = "button" em vez de input type = "submit".
Confira o Mozilla Developer Center para obter recursos básicos de html e javascript
fonte
Seu JavaScript está correto. Seu botão possui o
type="submit"
que está causando a atualização da página.fonte
Ele reaparece porque seu botão de envio recarrega a página. A maneira mais simples de evitar esse comportamento é adicionar um
return false
para oonclick
assim:fonte
Mude o tipo de entrada para "botão". Como TJ e Pav disseram, o formulário está sendo enviado. Seu Javascript parece correto, e eu o recomendo por experimentá-lo de maneira não-JQuery :)
fonte
index.html
myscripts.js
fonte
Esse é o código certo. O que provavelmente está acontecendo é que seu formulário está sendo enviado e você vê a nova página (onde o elemento existirá novamente).
fonte
Tente executar esse código no seu script .
E esperamos remover o elemento / botão.
fonte
Isso funciona. Basta remover o botão do "manequim"
div
se você quiser mantê-lo.fonte
Ainda sou novato também, mas aqui está uma maneira simples e fácil: você pode usar outerHTML, que é a tag inteira, não apenas uma parte:
<tag id='me'>blahblahblah</tag>
O innerHTML de EX: seriablahblahblah
, e oHTHT externo seria a coisa toda<tag id='me'>blahblahblah</tag>
,.Portanto, por exemplo, se você deseja excluir a tag, está basicamente excluindo seus dados; portanto, se você alterar o HTML externo para uma string vazia, é como excluí-lo.
Em vez disso, se você quiser apenas não exibi-lo, poderá estilizá-lo em JS usando as propriedades de visibilidade, opacidade e exibição.
Observe que
opacity
o elemento ainda é exibido, mas você não pode vê-lo tanto. Além disso, você pode selecionar texto, copiar, colar e fazer tudo o que normalmente poderia fazer, mesmo que seja invisível.Visibility
se adapta melhor à sua situação, mas deixará um espaço transparente em branco do tamanho do elemento ao qual foi aplicado.Eu recomendo que você exiba, dependendo de como você cria sua página da web. A tela basicamente exclui o elemento da sua visualização, mas você ainda pode vê-lo no DevTools. Espero que isto ajude!
fonte