Добавить новый элемент к детям существующего элемента можно методом appendChild, который в DOM есть у любого тега.
Код из следующего примера добавляет новые элементы к списку:
<ul id="list">
<li>Первый элемент</li>
</ul>
Список:
Первый элемент
// элемент-список UL
var list = document.getElementById('list')
// новый элемент
var li = document.createElement('LI')
li.innerHTML = 'Новый элемент списка'
// добавление в конец
list.appendChild(li)
Метод appendChild всегда добавляет элемент последним в список детей.
Новый элемент можно добавить не в конец детей, а перед нужным элементом.
Для этого используется метод insertBefore родительского элемента.
Он работает так же, как и appendChild, но принимает вторым параметром элемент, перед которым нужно вставлять.
parentElem.insertBefore(newElem, target)
Например, в том же списке добавим элементы перед первым li.
<ul id="list2">
<li>Первый элемент</li>
</ul>
Первый элемент
// родительский элемент UL
var list = document.getElementById('list2')
// элемент для вставки перед ним (первый LI)
var firstLi = list.getElementsByTagName('LI')[0]
// новый элемент
var newListElem = document.createElement('LI')
newListElem.innerHTML = 'Новый элемент списка'
// вставка
list.insertBefore(newListElem, firstLi)
Метод insertBefore позволяет вставлять элемент в любое место, кроме как в конец. А с этим справляется appendChild. Так что эти методы дополняют друг друга.
Метода insertAfter нет, но нужную функцию легко написать на основе комбинации insertBefore и appendChild.
Как видно - сообщение вложено в DIV фиксированного размера my-message и состоит из заголовка my-message-title, тела my-message-body и кнопки OK, которая нужна, чтобы сообщение закрыть.
Кроме того, добавлено немного простых стилей, чтобы как-то смотрелось.
Для создания сколько-нибудь сложных структур DOM, как правило, используют либо готовые шаблоны и метод cloneNode, создающий копию узла, либо свойство innerHTML.
Следующая функция создает сообщение с указанным телом и заголовком.
Как видно, она поступает довольно хитро. Чтобы создать элемент по текстовому шаблону, она сначала создает временный элемент (1), а потом записывает (2) его как innerHTML временного элемента (1). Теперь готовый элемент можно получить и вернуть (3).
Не вдаваясь в тонкости позиционирования - заметим, что для свойства top 200 пикселов прибавляются к текущей вертикальной прокрутке, которую браузер отсчитывает либо от documentElement либо от body - зависит от DOCTYPE и типа браузера.
При установке left от центра экрана вычитается половина ширины DIV'а с сообщением (у него стоит width:300).
Наконец, следующая функция вешает на кнопку OK функцию, удаляющую элемент с сообщением из DOM.
function addCloseOnClick(messageElem) {
var input = messageElem.getElementsByTagName('INPUT')[0]
input.onclick = function() {
messageElem.parentNode.removeChild(messageElem)
}
}
Обратите внимание, при получении элемента функции не используют DOM-свойства previousSibling/nextSibling.
Этому есть две причины. Первая - надежность. Мы можем изменить шаблон сообщения, вставить дополнительный элемент - и ничего не должно сломаться.
Вторая - это наличие текстовых элементов. Свойства previousSibling/nextSibling будут перечислять их наравне с остальными элементами, и придется их отфильтровывать.
Вот такой вопрос. У меня есть форма из кнопок (что-то вроде кнопок на калькуляторе). Мне нужно, чтобы по нажатии на одну из кнопок другая кнопка меняла своё значение. То есть, допустим, у мня есть кнопка b1 со значением "Изменить кнопку b2":
input type="button" name="b1" value="Изменить кнопку b2"
и кнопка b2 с пустым значением:
input type="button" name="b2" value=""
Как сделать так, чтобы после нажатия на кнопу b1, кнопка b2 меняла значение на, напрмер, 7?
Есть вопрос: в данном примере при нажатии несколько раз на кнопку "Показать" появляются несколько наших сообщений. А как сделать ограничение, чтобы сообщение появлялось только лишь один раз, вне зависимости от того, сколько раз была нажата кнопка?
я так думаю, что приведенный пример справедлив только в случае, если на страничке только один элемент типа "button", либо если нужная нам кнопка находится самой первой по тексту.
Теперь я понял как эти алерты делаются. Я использовал другой метод, создаю уже модель этого алерта внутри хтмл в видe блока и ставлю его visibility = "hidden" при нажатии на кнопку меняю visibility=)
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null )
node = document;
if ( tag == null )
tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
for (i = 0, j = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
a=getElementsByClass('rounded');
var i=0;
while (a[i]) {
a[i].innerHTML='<table style="width:'+a[i].style.width+';" class="table" cellpadding="0" cellspacing="0"><tr><td class="t-l"></td><td class="top"></td><td class="t-r"></td></tr><tr><td class="left"></td><td>'+a[i].innerHTML+'</td><td class="right"></td></tr><tr><td class="b-l"></td><td class="bottom"></td><td class="b-r"></td></tr></table>';
i++;
}
Этот скрипт в конце страницы вствлен. Как Вы поняли он для простого создания блоков-таблиц с круглыми краями. Все прелестно, НО!
Когда такой блок внутри другого блока, то внутренний блок на рисуется. Как разрешить эту проблему.
Илья, быть может, я невнимателен и не заметил, но мне кажется, что будет полезным уточнить, что removeChild() лишь "открепляет" элемент от документа. но не удаляет его. После этого элемент можно снова "прицепить" в дерево DOM, и, возможно, в другом месте.
<p>Щелкните на элемент, чтобы поднять его в списке.</p>
<ul>
<li onclick="move(this)">Мясо</li>
<li onclick="move(this)">Молоко</li>
<li onclick="move(this)">Яйца</li>
<li onclick="move(this)">Рыба</li>
<li onclick="move(this)">Соки</li>
<li onclick="move(this)">Воды</li>
</ul>
<script>
function move(o){
var parent = o.parentNode;
parent.removeChild(o);
parent.insertBefore(o, parent.firstChild);
}
</script>
Извините позднего гостя. Буду благодарен, если кто ответит.
Повторяю на всякий случай пример:
<p>Щелкните на элемент, чтобы поднять его в списке.</p>
<ul>
<li onclick="move(this)">Мясо</li>
<li onclick="move(this)">Молоко</li>
<li onclick="move(this)">Яйца</li>[html]
<li onclick="move(this)">Рыба</li>
<li onclick="move(this)">Соки</li>
<li onclick="move(this)">Воды</li>
</ul>
<script>
function move(o){ var parent = o.parentNode;
parent.removeChild(o);
parent.insertBefore(o, parent.firstChild);
} // самое интересное: правильно работает и без removeChild
</script>
Функция move(o) у меня почему-то правильно работает и без parent.removeChild.
Без parent.insertBefore происходит простое удаление элемента списка под курсором, и это понятно. Но без parent.removeChild я ожидал появление дубликатов, ан нет: элемент под курсором перемещается в начало списка как и прежде.
Метод insertBefore позволяет вставить новый элемент в DOM, либо переместить существующий. Ты применил к существующему, поэтому он и переместился. В твоем случае removeChild действительно не нужен)
Объясните плиз, как можно удалить элемент из документа, если можно то полный код напишите.
function del()
{
var list = document.getElementById('list')
list.removeChild(li)
}
innerHTML должен использоваться только для создания текста в элементах страницы, а лучше вообще не использоваться! как-то не профессионально это! Я думаю нужно было исползовать container.createElement('div') а не container.innerHTML = '
', хотя возможно я и ошибаюсь, я сам в этом новичёк, если я не прав поправьте, но то что через DOM добраться к элементам, созданным через innerHTML не возможно - это факт, лично с этим сталкивался!
Да, вы новичок, и поэтому вам не нравится. Создание через innerHTML - такой же надежный способ как и через DOM. При этом он зачастую проще, нагляднее и быстрее.
согласен на счёт innerHTML есть ряд сложностей, не помню в чём конкретно, но я с ними сталкивался, помоему IE не вешает события на динамически создаваемый элемент select и ещё какие то траблы были...
Так что при создании по настоящему сложного интерфейса лучше использовать DOM.
У меня тоже в IE6 (про более поздние версии не знаю) обработчик событий onclick, навешанный через innerHTML, не срабатывает. Не воспринимается и elem.onklick='...' (где elem - элемент DOM). Firefox'овский elem.setAttribute('onclick','...') IE6 тоже не понимает. Получается через outerHTML, напр.:
elem.outerHTML="" //-работает.
Но опять же outerHTML непонятен для Firefox...
Кто-нибудь знает универсальный способ ввести элемент DOM с обработчиком событий?
Любители ие6 чем-то похожи на людей, которые хотят не идти вперед вместе с прогрессом, а чтобы прогресс шел для них назад.
Так что совет - если не можете отказаться от ие6 - обратитесь к врачу. Иначе вы уподобляетесь средневековому невежде, которому проще облить грязью и заклеймить еретиком, чем попытаться понять что-то.
Угу. В школе - уроки программирования на javascript (!), но при этом стоят IE6(!!!). Знаю, это ересь, но во такой у нас судьбец... На дом задают ДЗ Круто, да? Приходится знать особенности "лучшего" из браузеров)
var value = document.getElementById('sel').value
var sel = document.getElementById('sel');
var text = sel.options[sel.selectedIndex].text;
var sel = document.getElementById('sel');
// создаем элемент option
var opt = document.createElement('option');
// определяем значение и текст нового элемента
opt.value = 4;
opt.innerHTML = 'four';
// добавляем option в конец select
sel.appendChild(opt);
Здравствуйте!
Вроде создал у себя документ как в примере:
<ul id="list2">
<li>Первый элемент</li>
</ul>
<script>
function da() {
// родительский элемент UL
var list = document.getElementById('list2')
// элемент для вставки перед ним (первый LI)
var firstLi = list.getElementsByTagName('LI')[0]
// новый элемент
var newListElem = document.createElement('LI')
newListElem.innerHTML = 'Новый элемент списка'
// вставка
list.insertBefore(newListElem, firstLi)
}
</script>
<a href="" onclick="da();">aaa</a>
Но создавать элемент - мой firefox отказывается, где я не прав?
Попробовал пример в "Добавление в DOM" на этой странице. Он мне выдал ошибку:
ошибка: Cannot call method 'appendChild' of null
вот. остальные сработали. если это зависит от браузера, то у меня Хром.
Все замечательно. Одно замечание по тексту статьи. Примеры со списками не запускаются пишет в FF list is null мне кажется не отрабатывает эта строка :
var list = document.getElementById('list') а не работает она из за того что не видит описание списка, которое выше пр тексту. Извините если не прав.
Имеется такой код(не полный), структура на всех страницах сайта повторяется, меняется только количество DIV, каким способом возможно удалить?
<div style="background: #BEDEF0;">
<div>
<div>
.....
по id, его просто нет, по тегу, но количество элементов на каждой странице разное, по Name нельзя, по ClassName тоже. Перебирать все DIV и искать по стилю?
var newDiv = document.createElement('div')
newDiv.className = 'my-class'
newDiv.id = 'my-id'
Ребята, не путайте свойства и атрибуты. В данном случае должна использоваться конструкция setAttribute, потому что все, что здесь указано - это атрибуты тэгов, и к свойствам узла DOM не имеют никакого отношения. Работать оно, конечно, будет и так (браузеры умные и создают свойства, аналогичные атрибутам), но правильно всё-таки через setAttribute, дабы не возникло путаницы.
Помогите сделать, почти такое же окно.
Только в правом углу, и прямоугольное.
напишите мне полный текст, уже сделанного окна.
Если не сложно. у меня скрипт java как я понял это делается через
mpage (val). Я хочу сделать отдельный лог в игре . Варвары
Скажите пожалуйста а как например сделать чтобы при onClick появлялся постепенно текст? Например после одного щелчка появляется одна фраза, затем после второго щелчка вторая фраза и тд.
С точки зрения программирования лучше будет создать переменную шага и наращивать её. То бишь описываем переменную. И с каждым нажатием кнопки значение делаем +1. И условием в зависимости от значения выдаем нужное сообщение.
[html]
подскажите в чем ошибка ?
при введение в input текста ,функция send не возвращает никакого значения[/html]
<input size="30" value="" id="in" type="text"/>
<input type="button" value="отправить" id="i" onclick="send()"/>
<script type="text/javascript">
function send(){
var d =document.getElementById('in').getAttribute('value');
console.log(d);
}
</script>
За статью СПАСИБО помогло!
но подскажите возможно ли сохранить созданный элемент в html документе?
созданный элемент после обновления страница пропадает.
Например :
[js]
function c_element(){
//добаление элемента к сущ. элементу
var list = document.getElementById('list');
//создаем новый элемент
var li = document.createElement('LI');
li.id = 'new-id';
li.innerHTML = 'Новый элемент добавленный через JS';
//добаление в конец
list.appendChild(li);
list.addCloseOnClick(li);
}
function x_element(){
var x = document.getElementById('new-id');
x.parentNode.removeChild(x);
}
[/js]
<a href="#" onclick="c_element()">Добавить</a>
<a href="#" onclick="x_element()">Удалить</a>
<br>
<br>
<ul id="list">
<li>Перый</li>
<li>Второй</li>
</ul>
помогите разобраться как выбрать элемент списка , чтоб он изменил цвет:
function test1() {
var list = document.getElementById("List");
var element = list.firstChild;
if (element != null) {
element.setAttribute("style", "color:green;");
}
div добавляются через innerHTML. При добавлении Alert() в конце функции или после нее после сначала выдается сообщение, а потом идет отрисовка блоков. Сама отрисовка из-за разного количества блоков может сильно затягиваться, поэтому SetTimeout неподходит
Эти основы позволяют вам динамически взаимодействовать с веб-страницей, создавая интерактивные и информативные immaculate grid пользовательские интерфейсы.
Изменение страницы посредством DOM — это процесс динамического изменения содержимого, структуры и стиля веб-страницы с помощью JavaScript. DOM представляет собой интерфейс, который позволяет скриптам получать доступ к содержимому HTML-документа и изменять его. https://basketrandom.net
Изменение DOM позволяет динамически создавать, удалять или изменять элементы на веб-странице, что делает Papa's Pizzeria интерфейсы более интерактивными и гибкими.
Этот сайт быстро стал одним из моих любимых! Статьи всегда информативны и дают свежие идеи, которые больше нигде не найти. https://www.bitamin.co.kr Мне очень нравится внимание к деталям и усилия, вложенные в создание ценных материалов. Спасибо за качественный контент — продолжайте в том же духе!
Спасибо!
Особенно за живой пример!
Может я невнимательно смотрел, но по-моему используемый в функции CreateMessage стиль "my-message-ok" не описан в соответствующем файле css.
я думаю, это можно пережить стиль будет дефолтным, серая кнопка-кирпич посередине родителя. не верх эстетики, конечно, но не переживайте так..
Вот такой вопрос. У меня есть форма из кнопок (что-то вроде кнопок на калькуляторе). Мне нужно, чтобы по нажатии на одну из кнопок другая кнопка меняла своё значение. То есть, допустим, у мня есть кнопка b1 со значением "Изменить кнопку b2":
input type="button" name="b1" value="Изменить кнопку b2"
и кнопка b2 с пустым значением:
input type="button" name="b2" value=""
Как сделать так, чтобы после нажатия на кнопу b1, кнопка b2 меняла значение на, напрмер, 7?
Вопрос снят: сам разобрался.
24 и готова
24 и готова
Спасибо огромное за статью - оч помогла.
Есть вопрос: в данном примере при нажатии несколько раз на кнопку "Показать" появляются несколько наших сообщений. А как сделать ограничение, чтобы сообщение появлялось только лишь один раз, вне зависимости от того, сколько раз была нажата кнопка?
Заранее благодарю =)
зафиксировать себе в переменную, что окно уже показано, но не закрыто и потом по условию наличия окна его либо делать, либо нет
я так думаю, что приведенный пример справедлив только в случае, если на страничке только один элемент типа "button", либо если нужная нам кнопка находится самой первой по тексту.
что ж, думайте дальше, это ваше право.
там в функцию передается конкретный объект, и уже в нем ищется input, который, естественно, в конкретном объекте-сообщении только один.
Теперь я понял как эти алерты делаются. Я использовал другой метод, создаю уже модель этого алерта внутри хтмл в видe блока и ставлю его visibility = "hidden" при нажатии на кнопку меняю visibility=)
Шикарная статья, хорошие практические примеры.
Вопрос такой: можно ли менять в новом элементе outerHTML?
супер! респект!
Этот скрипт в конце страницы вствлен. Как Вы поняли он для простого создания блоков-таблиц с круглыми краями. Все прелестно, НО!
Когда такой блок внутри другого блока, то внутренний блок на рисуется. Как разрешить эту проблему.
А не блокируют ли такие элементы браузеры? Ведь на этой основе можно сделать всплывающие окна. Притом очень легко !!!
Нет опасности в таких всплывающих окнах.
Илья, быть может, я невнимателен и не заметил, но мне кажется, что будет полезным уточнить, что removeChild() лишь "открепляет" элемент от документа. но не удаляет его. После этого элемент можно снова "прицепить" в дерево DOM, и, возможно, в другом месте.
Извините позднего гостя. Буду благодарен, если кто ответит.
Повторяю на всякий случай пример:
Функция move(o) у меня почему-то правильно работает и без parent.removeChild.
Без parent.insertBefore происходит простое удаление элемента списка под курсором, и это понятно. Но без parent.removeChild я ожидал появление дубликатов, ан нет: элемент под курсором перемещается в начало списка как и прежде.
Метод insertBefore позволяет вставить новый элемент в DOM, либо переместить существующий. Ты применил к существующему, поэтому он и переместился. В твоем случае removeChild действительно не нужен)
document.getElementById('text').innerHTML='';
но в IE 6 не сробатывает(
Объясните плиз, как можно удалить элемент из документа, если можно то полный код напишите.
function del()
{
var list = document.getElementById('list')
list.removeChild(li)
}
Заранее благодарю.
замени
list.removeChild(li)
на
list.removeNode(list)
или
заведи элемент li
var list = document.getElementById('list')
var li=list.getElementsByTagName('LI')
list.removeChild(li)
Либо, чтобы при щелчке элемент не перемещался на верх, а удалялся
А, все, дошло, всем спасибо )))))
Терь другой вопрос, можно ли добавить объект на который можно применить "клик"???
Хм,интересная статья.Спасибо)Надо еще перемещать это окошко позволить
Посмотрите на jQuery UI
Не нравится мне этота функция создания!
innerHTML должен использоваться только для создания текста в элементах страницы, а лучше вообще не использоваться! как-то не профессионально это! Я думаю нужно было исползовать container.createElement('div') а не container.innerHTML = '
Да, вы новичок, и поэтому вам не нравится. Создание через innerHTML - такой же надежный способ как и через DOM. При этом он зачастую проще, нагляднее и быстрее.
согласен на счёт innerHTML есть ряд сложностей, не помню в чём конкретно, но я с ними сталкивался, помоему IE не вешает события на динамически создаваемый элемент select и ещё какие то траблы были...
Так что при создании по настоящему сложного интерфейса лучше использовать DOM.
хотя возможно я чего то не догоняю, извините если туплю, пора спать ложиццо))
У меня тоже в IE6 (про более поздние версии не знаю) обработчик событий onclick, навешанный через innerHTML, не срабатывает. Не воспринимается и elem.onklick='...' (где elem - элемент DOM). Firefox'овский elem.setAttribute('onclick','...') IE6 тоже не понимает. Получается через outerHTML, напр.:
elem.outerHTML="" //-работает.
Но опять же outerHTML непонятен для Firefox...
Кто-нибудь знает универсальный способ ввести элемент DOM с обработчиком событий?
Любители ие6 чем-то похожи на людей, которые хотят не идти вперед вместе с прогрессом, а чтобы прогресс шел для них назад.
Так что совет - если не можете отказаться от ие6 - обратитесь к врачу. Иначе вы уподобляетесь средневековому невежде, которому проще облить грязью и заклеймить еретиком, чем попытаться понять что-то.
Угу. В школе - уроки программирования на javascript (!), но при этом стоят IE6(!!!). Знаю, это ересь, но во такой у нас судьбец... На дом задают ДЗ Круто, да? Приходится знать особенности "лучшего" из браузеров)
C радостью бы отказался. Но сложно заставить отказаться 80% юзеров, которые будут смотреть мои страницы со скриптами с помощью IE
Универсальнее не бывает:
function Listen(obj, evt, fn) {
if (obj.addEventListener) obj.addEventListener(evt, fn, false);
else if (obj.attachEvent) obj.attachEvent('on' + evt, fn);
}
Не работает всё это в експлорерах 6 и 7-м.... что делать?
var value = document.getElementById('sel').value
var sel = document.getElementById('sel');
var text = sel.options[sel.selectedIndex].text;
var sel = document.getElementById('sel');
// создаем элемент option
var opt = document.createElement('option');
// определяем значение и текст нового элемента
opt.value = 4;
opt.innerHTML = 'four';
// добавляем option в конец select
sel.appendChild(opt);
Вопрос. А есть ли событие, которое срабатывает при удалении элемента? Чтобы обрабатывать момент когда элемент удаляется.
А можно ли использовать innerHTML с window.open? Например:
Почитайте азы. Тогда таких вопросов не возникнет.
Азы читал, но конкретного ничего не нашел
В ИЕ работает а в FireFox нет
Подскажите, пожалуйста, как сделать создание и добавление скрипта в нужном месте страницы?
пример такой:
А проблема в следующем: при исполнении скрипта всё содержимое body меняется на содержимое скрипта.
содержимое скрипта:
у меня скрипт срабатывает в Chrome3 и Firefox3.6, в IE8 не срабатывает.
Заранее спасибо!
А что DOM не работает с таблицами
Это, видимо, риторический комментарий.
Суть не в содержании скрипта, а в методе реализации вызова скрипта - динамически (в зависимости от внешних параметров)
Объясните, пожалуйста, что не срабатывает.
в скрипте использую:
соответственно в хтмл:
Выдает ошибку "document.all is undefined".
При чем ход скопирован с работающего скрипта с изменением только id.
Спасибо, ответ уже не нужен. Оказалась проблема в самой винде. Скрипт стал работать после установки заплатки
Подскажите, пожалуйста, вот такой модуль
файл test.html
файл test.js
не работает....
пробовал и так
не могу понять что не так.
ранее при каком-то варианте работало, что изменил уже не помню, но работать перестало
этот вариант прошу не критиковать, зарапортовался....
вот так тоже не работает
Вам подсветка синтаксиса в месте кавычек ни о чем не говорит?
Вот как!?
Правильно надо было так
'1_2','none' нужно ставить такие ' кавычки, а не такие "...
Но все равно, в чем смысл функции я думаю понятно.
Является ли это решение "разумным"?
Если кто-то подскажет, буду признателен.
Если глобальная цель была скрыть див по нажатию кнопки, то проще было написать строку из функции сразу в обработчик. Функция тут не нужна.
А вообще, учебник Вам в руки. Иначе программирование превратится в передвижение по комнате в темноте.
window.onload = function(){
function test(idf,df){
window.document.getElementById(idf).style.display = df
}
}
может так ...
Здравствуйте!
Вроде создал у себя документ как в примере:
Но создавать элемент - мой firefox отказывается, где я не прав?
атрибут href у Вас пустой, если не требуется открывать по ссылке другой документ, вставляйте решетку (#).
юпии я 50000 человек который посмортел утот пост, призы будут?
Сори за офтоп)
Что то у меня не работает создание элемента не подскажете с чем может быть связано???
А вот в принципе и JavaScript:
FireBug показывает элемент а вот в окне браузера текст не отображается (пользуюсь Mozilla Firefox 3.6.6)
Ну а где добавление созданного элемента на страницу?
Например, document.body.appendChild(newDiv);
Кстати, это должно произойти уже после формирования DOM. К примеру, в window.onload
"newDiv.width = '1200px';
newDiv.height = '500px';"
надо в стиле это указывать
newDiv.style.width = '1200px';
newDiv.style.height = '500px';
Не могу понять почему не работает код вида
document.createElement('li').innerHTML='New Element'
С чего Вы взяли, что он не работает? Очень даже работает.
Как узнать входит ли элемент в родителя?
например
< div class="AA" >
< span class="BB" >Text< /span >
< /div >
Можно ли узнать, входит ли элемент спан.ВВ в див.АА?
Либо искать внутри див.АА спан.ВВ, либо идти от спан.ВВ по всем родителям и проверять, не является ли родитель див.АА.
Попробовал пример в "Добавление в DOM" на этой странице. Он мне выдал ошибку:
ошибка: Cannot call method 'appendChild' of null
вот. остальные сработали. если это зависит от браузера, то у меня Хром.
Все замечательно. Одно замечание по тексту статьи. Примеры со списками не запускаются пишет в FF list is null мне кажется не отрабатывает эта строка :
var list = document.getElementById('list') а не работает она из за того что не видит описание списка, которое выше пр тексту. Извините если не прав.
Выходит сообщение "null"
В чём дело может кто помоч ... плз ))
Имеется такой код(не полный), структура на всех страницах сайта повторяется, меняется только количество DIV, каким способом возможно удалить?
по id, его просто нет, по тегу, но количество элементов на каждой странице разное, по Name нельзя, по ClassName тоже. Перебирать все DIV и искать по стилю?В пункте "Добавление в конкретное место" заметил ошибку.
При нажатии на кнопку "Запустить" выдаёт ошибку.
Использую последнюю версию хрома.
+1
Добавление в DOM не работает
как добавить свойство си эс эс clip не в листинге стилей,а в скрипте на Квери?
Это НЕработающий пример c клипом
Ребята, не путайте свойства и атрибуты. В данном случае должна использоваться конструкция setAttribute, потому что все, что здесь указано - это атрибуты тэгов, и к свойствам узла DOM не имеют никакого отношения. Работать оно, конечно, будет и так (браузеры умные и создают свойства, аналогичные атрибутам), но правильно всё-таки через setAttribute, дабы не возникло путаницы.
Добавление в дом не работает дает
ошибка: list is null в ff
как читается DOM?
долгое время не получалось добавить LI к существующему списку.
сделал так:
то есть, искать надо ul для начала. А потом брать нужный элемент с индексом!!!
(a[0] в нашем случае). Хз, может кому поможет.
ребята помогите пожалуста clearTimeout(menuTime)
menuTime=setTimeout(function(){
$ac_loading.show();
var new_w = $(window).width() - $title.outerWidth(true);
$menu.stop().animate({width:new_w + 'px'},700,toggleMenu('up'))
},700) function toggleMenu(dir){
$menuItems.each(function(i){
var el_title = $(this).children('a:first'),marginTop,opacity,easing;
if(dir == 'up'){
marginTop = '0px';
opacity = '1';
// easing = 'easeOutBack';
}
else if(dir == 'down'){
marginTop = '60px';
opacity ='0';
// easing ='easeInBack';
}
$el_title.stop().animate({'marginTop' : marginTop , 'opacity' : opacity },200+i*200);
})
}
Сообщение не блокирует страницу. Наверное надо прозрачный слой под него подкладывать?
Почему не работает этот пример, как хотелось быю Вместо элементов tr, td к таблица добавляются только input.
table = document.createElement("table");
for (i=0;i<3;i++) {
table.appendChild(
document.createElement("tr").appendChild(
document.createElement("td").appendChild(
document.createElement("input")
)
)
);
}
Помогите сделать, почти такое же окно.
Только в правом углу, и прямоугольное.
напишите мне полный текст, уже сделанного окна.
Если не сложно. у меня скрипт java как я понял это делается через
mpage (val). Я хочу сделать отдельный лог в игре . Варвары
А чем можно заменить setupMessageButton ? на него ff ругается!
Скажите пожалуйста а как например сделать чтобы при onClick появлялся постепенно текст? Например после одного щелчка появляется одна фраза, затем после второго щелчка вторая фраза и тд.
С точки зрения программирования лучше будет создать переменную шага и наращивать её. То бишь описываем переменную. И с каждым нажатием кнопки значение делаем +1. И условием в зависимости от значения выдаем нужное сообщение.
Вопрос несколько глупый, но всё же. Почему при следующих операциях:
На выходе не 2 вложенных дива, а один.
Моя логика - создали элемент див и наполнили его ещё одним дивом. По моей логике, в итоге, должно получиться:
В чём я ошибся, подскажите, пожалуйста?
В начале статьи есть ответ. Чтобы создать элемент по текстовому шаблону, нужен временный контейнер.
Все же в jQuery с DOM-ом удобнее работать
здравствуйте! а зачем в функции используется обратный слеш (\) ?
подскажите в чем ошибка ?
при введение в input текста ,функция send не возвращает никакого значения
почему?
function send(){
var d =document.getElementById('in').getAttribute('value');
console.log(d);
}
elem.parentNode.removeChild(elem)??
как насчет elem.outerHTML=""?
скопировал всё с этого примера, почему-то после клика ошибка пишет что setupMessageButton не определена
За статью СПАСИБО помогло!
но подскажите возможно ли сохранить созданный элемент в html документе?
созданный элемент после обновления страница пропадает.
Например :
а как преобразовать строку в число parseInt() или Number()?? дитенахой
помогите разобраться как выбрать элемент списка , чтоб он изменил цвет:
function test1() {
var list = document.getElementById("List");
var element = list.firstChild;
if (element != null) {
element.setAttribute("style", "color:green;");
}
У меня есть скрипт на пользовательской кнопке, изменяющий DOM (добавляет много div с текстом и фоном). Как вывести alert после построения всех div?
div добавляются через innerHTML. При добавлении Alert() в конце функции или после нее после сначала выдается сообщение, а потом идет отрисовка блоков. Сама отрисовка из-за разного количества блоков может сильно затягиваться, поэтому SetTimeout неподходит
помогите зделать
У елемент
потрібно додати три
елементи. Вибрати
елемент за допомогою id = “test”. Створити кожен новий
елемент за допомогою методу createElement() та додати до списоку за допомогою методу appendChild().
Эти основы позволяют вам динамически взаимодействовать с веб-страницей, создавая интерактивные и информативные immaculate grid пользовательские интерфейсы.
Изменение страницы посредством DOM — это процесс динамического изменения содержимого, структуры и стиля веб-страницы с помощью JavaScript. DOM представляет собой интерфейс, который позволяет скриптам получать доступ к содержимому HTML-документа и изменять его. https://basketrandom.net
Изменение DOM позволяет динамически создавать, удалять или изменять элементы на веб-странице, что делает Papa's Pizzeria интерфейсы более интерактивными и гибкими.
Этот сайт быстро стал одним из моих любимых! Статьи всегда информативны и дают свежие идеи, которые больше нигде не найти. https://www.bitamin.co.kr Мне очень нравится внимание к деталям и усилия, вложенные в создание ценных материалов. Спасибо за качественный контент — продолжайте в том же духе!