Zamiast żmudnego wyszukiwania obejść dla każdego typu atrybutu i zdarzenia, używając następującej składni:
elem = document.createElement("div");
elem.id = 'myID';
elem.innerHTML = ' my Text '
document.body.insertBefore(elem,document.body.childNodes[0]);
Czy istnieje sposób, w jaki mogę po prostu zadeklarować cały element HTML jako ciąg? lubić:
elem = document.createElement("<div id='myID'> my Text </div>");
document.body.insertBefore(elem,document.body.childNodes[0]);
javascript
html
Błysk
źródło
źródło
Chcesz to
źródło
body
elemencie, ale działa dobrze na każdym innym elemencie.<body>
. Prawdę mówiąc, uruchamianie go na nim<body>
jest moją standardową metodą wprowadzania elementów takich jak arkusze stylów do stron internetowych za pośrednictwem konsoli. Jaki masz problem?<body>
było niezdefiniowane, tak samo byłoby ze wszystkimi innymi elementami, więc prawdopodobnie nie jest to problem Philla.Spójrz na insertAdjacentHTML
pozycja to pozycja względem wstawianego elementu, obok którego:
„beforebegin” Przed samym elementem
'afterbegin' Tylko wewnątrz elementu, przed jego pierwszym dzieckiem
„beforeend” Tylko wewnątrz elementu, po jego ostatnim potomku
„afterend” Po samym elemencie
źródło
W starej szkole JavaScript możesz to zrobić:
W odpowiedzi na Twój komentarz:
Musisz jednak wstrzyknąć nowy HTML do DOM; dlatego
innerHTML
jest używany w starym przykładzie JavaScript.innerHTML
TegoBODY
elementu jest poprzedzany z nowym HTML. Tak naprawdę nie dotykamy istniejącego kodu HTML wBODY
.Przepiszę powyższy przykład, aby to wyjaśnić:
Użycie frameworka JavaScript sprawiłoby, że kod byłby znacznie mniej rozwlekły i poprawiłby czytelność. Na przykład jQuery umożliwia wykonanie następujących czynności:
źródło
document.getElementsByTagName('body')[0]
rzeczywiście można go zastąpićdocument.body
, słuszna uwaga. Jeśli jednak chcesz dołączyć lub dołączyć nowy kod HTML do innego istniejącego elementu zamiast BODY, będziesz musiał użyćdocument.getElementById()
i / lubdocument.getElementsByTagName()
; dlatego użyłem go w przykładzie.Według mojej wiedzy, która, szczerze mówiąc, jest dość nowa i ograniczona, jedynym potencjalnym problemem związanym z tą techniką jest to, że uniemożliwione jest dynamiczne tworzenie niektórych elementów tabeli.
Używam formularza do tworzenia szablonów, dodając elementy „szablonu” do ukrytego DIV, a następnie używając cloneNode (true), aby utworzyć klon i dołączyć go zgodnie z wymaganiami. Pamiętaj, że musisz upewnić się, że w razie potrzeby ponownie przypisujesz identyfikatory, aby zapobiec powielaniu.
źródło
Jak powiedzieli inni, wygodna funkcjonalność dołączania jQuery może być emulowana:
Chociaż niektórzy twierdzą, że lepiej nie "zadzierać" z innerHTML , jest on niezawodny w wielu przypadkach, jeśli wiesz, że:
https://developer.mozilla.org/en-US/docs/Web/API/Element/innerHTML
Lub:
insertAdjacentHTML
to prawdopodobnie dobra alternatywa: https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentHTMLźródło
Jeśli chcesz wstawić kod HTML do znacznika istniejącej strony, użyj Jneratora . To narzędzie zostało stworzone specjalnie do tego celu.
Zamiast pisać kolejny kod
Możesz napisać bardziej zrozumiałą strukturę
źródło