Jestem całkowitym nowicjuszem. Czy ktoś może mi powiedzieć, jak usunąć element HTML przy użyciu oryginalnego JavaScript, a nie 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);
}
Gdy kliknę przycisk przesyłania, zniknie on na bardzo krótki czas, a następnie natychmiast pojawi się z powrotem. Chcę całkowicie usunąć element po kliknięciu przycisku.
javascript
html
Newbie Coder
źródło
źródło
Odpowiedzi:
Dzieje się tak, że formularz jest przesyłany, a więc strona jest odświeżana (z oryginalną zawartością). Obsługujesz
click
zdarzenie za pomocą przycisku przesyłania.Jeśli chcesz usunąć element i nie przesyłać formularza,
submit
zamiast tego obsłuż zdarzenie w formularzu i wróćfalse
z modułu obsługi:HTML:
JavaScript:
Ale w ogóle nie potrzebujesz (ani nie chcesz) formularza do tego, nie jeśli jego jedynym celem jest usunięcie fikcyjnego div. Zamiast:
HTML:
JavaScript:
Jednak ten styl konfigurowania programów obsługi zdarzeń jest przestarzały. Wydaje się, że masz dobry instynkt, ponieważ Twój kod JavaScript znajduje się we własnym pliku i tak dalej. Następnym krokiem jest pójście dalej i uniknięcie używania
onXYZ
atrybutów do podłączania programów obsługi zdarzeń. Zamiast tego w swoim JavaScript możesz je połączyć z nowszym (około roku 2000) sposobem:HTML:
JavaScript:
... następnie wywołaj
pageInit();
zscript
tagu na samym końcu stronybody
(tuż przed</body>
tagiem zamykającym ) lub z poziomuwindow
load
zdarzenia, chociaż dzieje się to na bardzo późnym etapie cyklu ładowania strony i dlatego zwykle nie nadaje się do podłączania zdarzenia obsługi (dzieje się po załadowaniu wszystkich obrazów).Zauważ, że musiałem włożyć trochę obsługi, aby poradzić sobie z różnicami w przeglądarkach. Prawdopodobnie będziesz potrzebować funkcji do podłączania zdarzeń, więc nie musisz za każdym razem powtarzać tej logiki. Lub rozważ użycie biblioteki, takiej jak jQuery , Prototype , YUI , Closure lub dowolnej z kilku innych, aby wygładzić te różnice między przeglądarkami. Jest to bardzo ważne , aby zrozumieć podstawowa rzeczy dzieje, zarówno pod względem podstaw JavaScript i fundamentów dom, ale biblioteki czynienia z dużo niespójności, a także dostarczają wiele narzędzi przydatnych - jak środek podpinania obsługi zdarzeń, która zajmuje się różnice w przeglądarkach. Większość z nich zapewnia również sposób konfigurowania funkcji (np
pageInit
) do uruchomienia, gdy tylko DOM będzie gotowy do manipulacji, na długo przedwindow
load
pożarem.źródło
type="button"
lub umieśćreturn false;
w swojej funkcji JSonxyz
właściwości elementu) zezwala tylko na pojedynczą procedurę obsługi, a jeśli przypisujesz do właściwości, zastępujesz to, co tam było, więc nie działa dobrze z innymi. (kont.)Po prostu zrób to
element.remove();
Wypróbuj tutaj PATRZ
http://jsfiddle.net/4WGRP/
źródło
.remove()
Należy użyć input type = "button" zamiast input type = "submit".
Zamówienie Mozilla Developer Center dla podstawowego html i javascript zasobów
źródło
Twój JavaScript jest poprawny. Twój przycisk ma
type="submit"
przyczynę odświeżania strony.źródło
Pojawia się ponownie, ponieważ przycisk przesyłania ponownie ładuje stronę. Najprostszym sposobem uniknięcia takiego zachowania jest dodanie a
return false
doonclick
podobnego:źródło
Zmień typ wejścia na „przycisk”. Jak powiedzieli TJ i Pav, formularz jest przesyłany. Twój Javascript wygląda poprawnie i pochwalam za wypróbowanie go w sposób inny niż JQuery :)
źródło
index.html
myscripts.js
źródło
To jest właściwy kod. To, co prawdopodobnie się dzieje, to przesyłanie formularza i widzisz nową stronę (na której element będzie ponownie istniał).
źródło
Spróbuj uruchomić ten kod w swoim skrypcie .
I miejmy nadzieję, że usunie element / przycisk.
źródło
To działa. Po prostu usuń przycisk z „atrapy”,
div
jeśli chcesz go zatrzymać.źródło
Nadal jestem nowicjuszem, ale oto jeden prosty i łatwy sposób: Możesz użyć zewnętrznego HTML, który jest całym tagiem, a nie tylko częścią:
EX :
<tag id='me'>blahblahblah</tag>
's innerHTML byłobyblahblahblah
, a externalHTML byłoby wszystkim,<tag id='me'>blahblahblah</tag>
.Na przykład, jeśli chcesz usunąć tag, w zasadzie usuwa on jego dane, więc jeśli zmienisz zewnętrzny kod HTML na pusty ciąg, to tak, jakbyś go usunął.
Zamiast tego, jeśli chcesz go po prostu nie wyświetlać, możesz stylizować go w JS, używając właściwości widoczności, krycia i wyświetlania.
Zwróć na to uwagę
opacity
sprawia że element nadal jest wyświetlany, ale nie możesz go zobaczyć tak często. Możesz także zaznaczać tekst, kopiować, wklejać i robić wszystko, co normalnie, nawet jeśli jest to niewidoczne.Visibility
bardziej pasuje do Twojej sytuacji, ale pozostawi pustą przezroczystą przestrzeń o wielkości odpowiadającej elementowi, do którego został zastosowany.Zalecałbym wyświetlanie, w zależności od tego, jak tworzysz swoją stronę. Wyświetl zasadniczo usuwając element z widoku, ale nadal możesz go zobaczyć w DevTools. Mam nadzieję że to pomoże!
źródło