Добавить новый элемент к детям существующего элемента можно методом 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>
Объясните плиз, как можно удалить элемент из документа, если можно то полный код напишите.
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, дабы не возникло путаницы.
Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены. Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Спасибо!
Особенно за живой пример!
Может я невнимательно смотрел, но по-моему используемый в функции CreateMessage стиль "my-message-ok" не описан в соответствующем файле css.
я думаю, это можно пережить
стиль будет дефолтным, серая кнопка-кирпич посередине родителя. не верх эстетики, конечно, но не переживайте так..
Вот такой вопрос. У меня есть форма из кнопок (что-то вроде кнопок на калькуляторе). Мне нужно, чтобы по нажатии на одну из кнопок другая кнопка меняла своё значение. То есть, допустим, у мня есть кнопка b1 со значением "Изменить кнопку b2":
input type="button" name="b1" value="Изменить кнопку b2"
и кнопка b2 с пустым значением:
input type="button" name="b2" value=""
Как сделать так, чтобы после нажатия на кнопу b1, кнопка b2 меняла значение на, напрмер, 7?
Вопрос снят: сам разобрался.
Спасибо огромное за статью - оч помогла.
Есть вопрос: в данном примере при нажатии несколько раз на кнопку "Показать" появляются несколько наших сообщений. А как сделать ограничение, чтобы сообщение появлялось только лишь один раз, вне зависимости от того, сколько раз была нажата кнопка?
Заранее благодарю =)
зафиксировать себе в переменную, что окно уже показано, но не закрыто и потом по условию наличия окна его либо делать, либо нет
я так думаю, что приведенный пример справедлив только в случае, если на страничке только один элемент типа "button", либо если нужная нам кнопка находится самой первой по тексту.
что ж, думайте дальше, это ваше право.
там в функцию передается конкретный объект, и уже в нем ищется input, который, естественно, в конкретном объекте-сообщении только один.
Теперь я понял как эти алерты делаются. Я использовал другой метод, создаю уже модель этого алерта внутри хтмл в видe блока и ставлю его visibility = "hidden" при нажатии на кнопку меняю visibility=)
Шикарная статья, хорошие практические примеры.
Вопрос такой: можно ли менять в новом элементе outerHTML?
супер! респект!
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>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
Не нравится мне этота функция создания!
function createMessage(title, body) { // (1) var container = document.createElement('div') // (2) container.innerHTML = '<div class="my-message"> \ <div class="my-message-title">'+title+'</div> \ <div class="my-message-body">'+body+'</div> \ <input class="my-message-ok" type="button" value="OK"/> \ </div>' // (3) return container.firstChild }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? Например:
function win(content){ dop=wondow.open('',"test",""); dop.innerHTML=content; return false; }Почитайте азы. Тогда таких вопросов не возникнет.
Азы читал, но конкретного ничего не нашел
В ИЕ работает а в FireFox нет
Подскажите, пожалуйста, как сделать создание и добавление скрипта в нужном месте страницы?
пример такой:
<html> <head> <script language="JavaScript" type="text/javascript"> function rrr(){ var elem = document.createElement("script"); elem.setAttribute("type", "text/javascript"); elem.setAttribute("src", "03_09.js"); h_data.appendChild(elem);} </script> </head> <body onClick=rrr()> <div id="h_data"> блок для сценария </div> <div id="h1_data"> блок после сценария </div> </body> </html>А проблема в следующем: при исполнении скрипта всё содержимое body меняется на содержимое скрипта.
содержимое скрипта:
document.write('<TABLE WIDTH=100% BORDER=1 CELLPADDING=2 CELLSPACING=2><COL WIDTH=125><COL WIDTH=60><COL><tr valign="top"><td><b> 9 марта </b></td><td><b>2010</b></td><td>получилось</td></tr></TABLE>');у меня скрипт срабатывает в Chrome3 и Firefox3.6, в IE8 не срабатывает.
Заранее спасибо!
А что DOM не работает с таблицами
Это, видимо, риторический комментарий.
Суть не в содержании скрипта, а в методе реализации вызова скрипта - динамически (в зависимости от внешних параметров)
Объясните, пожалуйста, что не срабатывает.
в скрипте использую:
соответственно в хтмл:
Выдает ошибку "document.all is undefined".
При чем ход скопирован с работающего скрипта с изменением только id.
Спасибо, ответ уже не нужен. Оказалась проблема в самой винде. Скрипт стал работать после установки заплатки
Подскажите, пожалуйста, вот такой модуль
файл test.html
файл test.js
function test(idf,df) { window.document.getElementById(idf).style.display = df }не работает....
пробовал и так
<input type="button" value="Запустить" onclick="test("1_2","none")"/>не могу понять что не так.
ранее при каком-то варианте работало, что изменил уже не помню, но работать перестало
этот вариант прошу не критиковать, зарапортовался....
вот так тоже не работает
<input type="button" value="Запустить" onclick="test("1_2","none")"/>Вам подсветка синтаксиса в месте кавычек ни о чем не говорит?
Вот как!?
Правильно надо было так
<html> <head> <title>Текст</title> <script src="test.js"></script> </head> <body> <h1>Тестовый файл</h1> <div id="1">11111111111111111 <div id="1_1">11</div> <div id="1_2">12</div> </div> <div id="2">22222222222222222</div> <input type="button" value="Запустить" onclick="test('1_2','none')"/> </body> </html>'1_2','none' нужно ставить такие ' кавычки, а не такие "...
Но все равно, в чем смысл функции я думаю понятно.
Является ли это решение "разумным"?
Если кто-то подскажет, буду признателен.
Если глобальная цель была скрыть див по нажатию кнопки, то проще было написать строку из функции сразу в обработчик. Функция тут не нужна.
А вообще, учебник Вам в руки. Иначе программирование превратится в передвижение по комнате в темноте.
Здравствуйте!
Вроде создал у себя документ как в примере:
<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 отказывается, где я не прав?
атрибут href у Вас пустой, если не требуется открывать по ссылке другой документ, вставляйте решетку (#).
юпии я 50000 человек который посмортел утот пост, призы будут?
Сори за офтоп)
Что то у меня не работает создание элемента не подскажете с чем может быть связано???
А вот в принципе и JavaScript:
// JavaScript Document //alert('Проверка скрипта'); var newDiv = document.createElement('div'); //document.getElementsByTagName("BODY").style.margin = 0; //document.getElementsByTagName("BODY").style.padding = 0; //document.getElementsByTagName("BODY").style.textAlign = 'center'; newDiv.id = 'main'; newDiv.width = '1200px'; newDiv.height = '500px'; newDiv.style.marginLeft = 'auto'; newDiv.style.marginRight = 'auto'; newDiv.style.border = '1px solid black'; newDiv.innerHTML = '<h1>ТЕСТ</h2>';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') а не работает она из за того что не видит описание списка, которое выше пр тексту. Извините если не прав.
function createMessage(title, body) { var container = document.createElement('div') container.innerHTML = '<div class="my-message"> \ <div class="my-message-title">'+title+'</div> \ <div class="my-message-body">'+body+'</div> \ <input class="my-message-ok" type="button" value="OK"/> \ </div>' alert( container.firstChild ); return container.firstChild }Выходит сообщение "null"
В чём дело может кто помоч ... плз ))
<body> <div> <div> <div> ..... <div id="content"> <div> <div> ..... <div style="background: #BEDEF0;"> <div> <div> ..... <div id="footer"> <div> <div> ..... <div> <div> <div> ..... </body>Имеется такой код(не полный), структура на всех страницах сайта повторяется, меняется только количество DIV, каким способом возможно удалить?
<div style="background: #BEDEF0;"> <div> <div> .....по id, его просто нет, по тегу, но количество элементов на каждой странице разное, по Name нельзя, по ClassName тоже. Перебирать все DIV и искать по стилю?В пункте "Добавление в конкретное место" заметил ошибку.
При нажатии на кнопку "Запустить" выдаёт ошибку.
Использую последнюю версию хрома.
+1
Добавление в DOM не работает
r
как добавить свойство си эс эс clip не в листинге стилей,а в скрипте на Квери?
Это НЕработающий пример c клипом
<style> #ros{ //оригинальноый синтаксис clip: rect(auto,auto,auto,35px); } </style> .... <script> var wid=$('img').width() $('#ret').css({'width':wid,'clip': 'rect'('auto','auto','auto','35px')}) </script>var newDiv = document.createElement('div') newDiv.className = 'my-class' newDiv.id = 'my-id'Ребята, не путайте свойства и атрибуты. В данном случае должна использоваться конструкция setAttribute, потому что все, что здесь указано - это атрибуты тэгов, и к свойствам узла DOM не имеют никакого отношения. Работать оно, конечно, будет и так (браузеры умные и создают свойства, аналогичные атрибутам), но правильно всё-таки через setAttribute, дабы не возникло путаницы.
Добавление в дом не работает дает
ошибка: list is null в ff
как читается DOM?
Если мечтаешь о радуге,будь готов попасть под дождь.
долгое время не получалось добавить LI к существующему списку.
сделал так:
var a = document.body.getElementsByTagName('ul'); var newL = document.createElement('LI'); newL.innerHTML = "5"; a[0].appendChild(newL);то есть, искать надо 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);
})
}
Отправить комментарий
Приветствуются комментарии:- Полезные.
- Дополняющие прочитанное.
- Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.Для остальных вопросов и обсуждений есть форум.