Быстрое создание (x)HTML элементов методами DOM.

www.karman.com.ua
портал о хостинге в Украине
Хостинг + Украина = Karman.com.ua

Сайт от А до Б

/

Основы сайта

/

Интересные скрипты

/

Изучаем PHP

/

Как заработать на сайте

/

Раскрутка сайта

/

CMS


Быстрое создание (x)HTML элементов методами DOM. 

Еще по теме:
  HTML-редактор Apple iWeb - лидер валидности
  Код php в HTML и закачка на хостинг
  Шрифт как элемент фирменного стиля
  Свойство фона - background HTML-страницы
  Теория оптимизационной структурной HTML-разметки
  Выбираем лучший редактор HTML
  Новый тариф "Быстрый старт" от UaDOMen.com
  Мне очень нравится работа хостинга,Быстро и Надежно

Добавление новых элементов обычными методами DOM скучное занятие, которое может вызвать справедливое недовольство: для каждого элемента получаются очень многословные и многоэтажные конструкции. Если нужно сделать один-два элемента (например, DIV или P и т.п.) с текстом внутри, еще можно смириться с написанием большого количества практически одинаковых строк кода. Ведь, создание элемента, DOM-метод document.createElement() редко обходится без добавления этому элементу различных атрибутов. Размещение текста внутри элемента потребует вызвать еще и метод создания текстового узла document.createTextNode(), а также appendChild(). В-общем, с этим нельзя мириться, надо бороться, а как - будет показано далее на примере создания элемента DIV с текстом внутри двумя способами.

Обычный способ


function handle_button() {
    var parent = document.getElementById('myContainer');
    var newdiv = document.createElement('div');
    newdiv.className = 'myDivCSSClass';
    newdiv.id = 'myDivId';
    newdiv.style.width = '200px';
    newdiv.style.height = '250px';
    newdiv.style.background = '#3B9D00';
    newdiv.style.color = '#fff';
    var text = "текст текст текст текст текст текст текст текст";
    var textNode = document.createTextNode(text);
    newdiv.appendChild(textNode);
    parent.appendChild(newdiv);
}

В функции handle_button() переменная parent ссылается на элемент с id="myContainer", в котором будет размещен новый элемент. Затем создается совершенно обычный новый элемент DIV, добавляются ему обычные атрибуты id, class и style, а также устанавливаются их значения. После создается текстовый узел, присоединяется созданному элементу DIV и все это размещается в элементе с id="myContainer". Чтобы сделать 10 новых DIV придется изрядно потрудиться, т.к. возможно, потребуется разместить их в разных местах веб-страницы, т.е. присоединить к разным элементам. Не стоит забывать о том, что значение атрибута id внутри документа должно быть уникальным, да и значения остальных атрибутов у элементов могут отличаться.

Удобный способ создания новых элементов

Эта функция поможет создать новый элемент, добавить ему различные атрибуты, а также присоединить к нему текстовый узел. Обязательным является только аргумент name.


function elem(name, attrs, style, text) {
    var e = document.createElement(name);
    if (attrs) {
        for (key in attrs) {
            if (key == 'class') {
                e.className = attrs[key];
            } else if (key == 'id') {
                e.id = attrs[key];
            } else {
                e.setAttribute(key, attrs[key]);
            }
        }
    }
    if (style) {
        for (key in style) {
            e.style[key] = style[key];
        }
    }
    if (text) {
        e.appendChild(document.createTextNode(text));
    }
    return e;
}

В качестве примера вызова функции создадим такой же DIV, как в самом начале статьи, с теми же атрибутами:


function handle_button() {
    var parent = document.getElementById('myContainer');
    parent.appendChild(elem('div',
      {'class': 'myDivCSSClass', 'id': 'myDivId'},
      {'width': '200px', 'height': '250px', 'background': '#3B9D00', 'color': '#fff'}, 
      'текст текст текст текст текст текст текст текст'));
}


Чтобы обсудить это в форуме, нажмите здесь.


Хостинг-источник: http://karman.com.ua, http://xhtml.ru/2006/06/30/create-element/
  Я не могу использовать (кликать) HTML-формы в полях, где я применил MIME-преобразование!
  Как ограничить число элементов выдаваемых SELECT в MySQL?


Есть вопросы о хостинге и о сайтах?
и получи ответ от профессионалов, которые обожают помогать людям :).
Еще по теме:
  DOMaining и DOMainers – получение остаточной прибыли при помощи DOMain Parking
  PHP и HTML
  VIP хостинг от UaDOMen.com
  Акция счастливая семерка от UADOMen
  Как добиться, чтоб Ваш сайт Быстро проиндексировали поисковые системы
  Первая встреча украинских домейнеров - Kiev DOMainer Fest 2008
  Эксклюзивно для «DOMainTimes»: Интервью с практикующим doss-ером.
  Не ждите Быстрого заработка в сети!
  7 ключевых элементов для сайта, дружественного посетителям
  Быстрое развитие домена RU соответствует росту числа пользователей Интернета в России
  Google намерена бороться с бесчестным использованием сервиса DOMain Testing
  О фестивале DOMainFest 2008
  Как создать поддомен (субдомен) 3-го уровня вида subDOMain.DOMain?
© СПД Праведно-Счастливый Аладдин Ярославович, 2004-2008. Все права защищены. При цитировании материалов ссылка на www.karman.com.ua обязательна. Редакция "Кармана" может не разделять точку зрения авторов статей, сообщений и ответственности за их содержание не несет.

Быстрый переход к содержимому сайта Karman.com.ua:
Новости, советы, углубленные знания, знания для новичков, законодательство, интересные скрипты, фотогалереи, отчеты, статьи о хостинге: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
Часто задаваемые общие вопросы о хостинге, про FTP, PHPMyAdmin и MySQL, CPanel, Предустановленные скрипты, WHM, Cron, .htaccess, SSH, Паролирование директорий, О доменах, о работе с сайтом, о Раскрутке сайта, об Электронной почте, про Основы web-программирования: 0, 1
Энциклопедия основных терминов хостинга, программного обеспечения, железной стороны хостинга, технологий, электронной почты и доменов: 0, 1, 2, 3, 4, 5, 6
Сайты о хостинге (форумы, хостинг-провайдеры, студии веб-дизайна, домен-регистраторы, инструментарии в помощь вебмастеру): 0, 1, 2

Rambler's Top100