Вставлення HTML у розділ


118

Я намагаюся вставити шматок HTML у розділ. Я хочу побачити, чи звичайний спосіб JavaScript швидший, ніж використання jQuery. На жаль, я забув, як це зробити "по-старому". : P

var test2 = function(){
    var cb = function(html){
        var t1 = document.getElementById("test2");
        var d = document.createElement("div");
        d.id ="oiio";
        d.innerHtml = html;
        t1.appendChild(d);
        console.timeEnd("load data with javascript");
    };
    console.time("load data with javascript");
    $.get("test1.html", cb);
}

що я тут роблю неправильно, хлопці?

редагувати :
хтось запитав, що швидше, jquery чи звичайний js, тому я написав тест:
http://jsperf.com/html-insertion-js-vs-jquery

звичайний js швидше на 10%


Тепер який швидше? звичайний javascript або jquery?
Алі

3
@Ali: js швидше, дивіться мою редагування.
mkoryak

Відповіді:


177

Я думаю, що ви цього хочете:

document.getElementById('tag-id').innerHTML = '<ol><li>html data</li></ol>';

Майте на увазі, що innerHTML недоступний для всіх типів тегів при використанні IE. (елементи таблиці, наприклад)


23
+1, щоб згадати сумісність IE, бажаю, щоб це зробили!
Енріко

Чудово, дякую!
користувач3396381

53

Використання JQuery допоможе невідповідності цього браузера. З бібліотекою jquery, включеною у ваш проект, просто напишіть:

$('#yourDivName').html('yourtHTML');

Ви також можете скористатися:

$('#yourDivName').append('yourtHTML');

Це додасть вашу галерею як останній елемент у вибраному розділі. Або:

$('#yourDivName').prepend('yourtHTML');

Це додасть його як перший елемент у вибраному розділі.

Дивіться документи JQuery щодо цих функцій:


22
OP спеціально попросив звичайний javascript, але це мені допомогло, тому я все ще вважаю це корисним.
подвійнийJ

Допоможе побачити приклад із вставленим довгим рядком Html. Наприклад, у мене є випадок, коли серверні технології (php тощо) заборонені, і я хочу повторно використовувати близько 20 рядків html всередині однієї сторінки.
Дженніфер Мішель

Це може стати в нагоді. Дякую.
arunken

40

Я використовую "+" (плюс), щоб вставити div у html:

document.getElementById('idParent').innerHTML += '<div id="idChild"> content html </div>';

Сподіваюся, що це допоможе.


3
Дякую за відповідь + =, що врятувало мені багато головних болів.
Майкл Туннелл

1
@MichaelTunnell це справді було
божественний

Дякую. Функція appendChild для мене не працювала, але це добре працювало для мого використання.
khwilo

Це правильна відповідь, на запитання, як вставити, дякую
OJB1

28

В якості альтернативи ви можете використовувати insertAdjacentHTML - однак я заглиблююсь і роблю деякі тести на ефективність - (2019.09.13 п’ятниця) MacOs High Sierra 10.13.6 на Chrome 76.0.3809 (64-розрядні), Safari 12.1.2 (13604.5.6), Firefox 69.0.0 (64-розрядні)). Тест F призначений лише для довідки - він не виходить за межі питання, оскільки нам потрібно вставляти html динамічно - але в F я це роблю 'вручну' (статичним способом) - теоретично (наскільки я знаю) це повинно бути найшвидший спосіб вставити нові елементи html.

введіть тут опис зображення

ПІДСУМОК

  • (Не плутати з ) є найшвидшим (Safari 48К операцій в секунду, Firefox 43Кб оп / сек, Chrome 23k оп / сек) становить ~ 31% повільніше , ніж ідеальне рішення F тільки хром , але на сафарі і Firefox швидше ( !) innerHTML =+=
  • B innerHTML +=... є самим повільним у всіх браузерах (Chrome 95 оп / сек, Firefox 88 оп / сек, Sfari 84 оп / сек)
  • D JQuery є другою повільно у всіх браузерах (Safari 14 оп / сек, Firefox 11k оп / сек, Chrome 7k оп / сек)
  • Референтне рішення F (теоретично найшвидше) не найшвидше на Firefox та сафарі (!!!) - що дивно
  • Найшвидшим браузером став Safari

Більш детальна інформація про те, чому innerHTML =це набагато швидше , ніж innerHTML +=це тут . Ви можете виконати тест на своїй машині / браузері ТУТ


18

І багато рядків можуть виглядати так. HTML тут є лише зразком.

var div = document.createElement("div");

div.innerHTML =
    '<div class="slideshow-container">\n' +
    '<div class="mySlides fade">\n' +
    '<div class="numbertext">1 / 3</div>\n' +
    '<img src="image1.jpg" style="width:100%">\n' +
    '<div class="text">Caption Text</div>\n' +
    '</div>\n' +

    '<div class="mySlides fade">\n' +
    '<div class="numbertext">2 / 3</div>\n' +
    '<img src="image2.jpg" style="width:100%">\n' +
    '<div class="text">Caption Two</div>\n' +
    '</div>\n' +

    '<div class="mySlides fade">\n' +
    '<div class="numbertext">3 / 3</div>\n' +
    '<img src="image3.jpg" style="width:100%">\n' +
    '<div class="text">Caption Three</div>\n' +
    '</div>\n' +

    '<a class="prev" onclick="plusSlides(-1)">&#10094;</a>\n' +
    '<a class="next" onclick="plusSlides(1)">&#10095;</a>\n' +
    '</div>\n' +
    '<br>\n' +

    '<div style="text-align:center">\n' +
    '<span class="dot" onclick="currentSlide(1)"></span> \n' +
    '<span class="dot" onclick="currentSlide(2)"></span> \n' +
    '<span class="dot" onclick="currentSlide(3)"></span> \n' +
    '</div>\n';

document.body.appendChild(div);
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.