Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: добавление элемента после элемента

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
haveFun
Отправлено: 19 Апреля, 2011 - 01:06:36
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




привет. столкнулся с такой вот труднореализуемой задачей.
допустим форма имеет такой вид:
CODE (html):
скопировать код в буфер обмена
  1. <div>
  2.     <div id="r1">
  3.         text1
  4.         <div id="g1">
  5.             text2
  6.         </div>
  7.         <div id="g2">
  8.             text3
  9.         </div>
  10.     </div>
  11. <!-- сюда нужно воткнуть див -->
  12.     <div id="r2">
  13.         text4
  14.         <div id="g3">
  15.             text5
  16.         </div>
  17.     </div>
  18. </div>

, где тексты (text) выгружаются из бд.
структура представляет из себя что-то типа содержания с разделами "r", и главами "g".
допустим мне нужно добавить новый раздел(<div id="NEW">), но не в конец, а в середину, чтобы он был вторым, а второй соответственно стал третьим.
и тоже самое с главами внутри их.
как быть? Не понял

(Отредактировано автором: 19 Апреля, 2011 - 01:07:52)

 
 Top
OrmaJever
Отправлено: 19 Апреля, 2011 - 01:12:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)






-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
haveFun
Отправлено: 19 Апреля, 2011 - 19:49:30
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




OrmaJever пишет:

к сожалению это косячный метод, либо я просто не знаю как сделать чтобы в процессе добавления менялись параметры в функциях:
CODE (javascript):
скопировать код в буфер обмена
  1. function asd(x) {
  2.         var list = document.getElementById('list2')
  3.         var firstLi = list.getElementsByTagName('div')[x]
  4.         var newListElem = document.createElement('div')
  5.                 newListElem.innerHTML = 'Новый элемент списка'
  6.  
  7.                 list.insertBefore(newListElem, firstLi)
  8. }

CODE (html):
скопировать код в буфер обмена
  1. <div id="list2">
  2.         <div id="1">Первый элемент - <a href="#" onClick="javascript: asd(1);">PLUS</a></div>
  3.         <div id="2">Второй элемент - <a href="#" onClick="javascript: asd(2);">PLUS</a></div>
  4. </div>

asd(1) и asd(2)

вопрос в силе.

(Отредактировано автором: 19 Апреля, 2011 - 19:51:57)

 
 Top
OrmaJever
Отправлено: 19 Апреля, 2011 - 20:04:34
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




haveFun пишет:
var firstLi = list.getElementsByTagName('div')[x]

елементы масива начинаются с 0, если вы передаёте как параметр 1 и 2 то это будет 2 и 3 елементы масива, а 3 нету.


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
haveFun
Отправлено: 19 Апреля, 2011 - 20:18:10
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




OrmaJever пишет:
haveFun пишет:
var firstLi = list.getElementsByTagName('div')[x]

елементы масива начинаются с 0, если вы передаёте как параметр 1 и 2 то это будет 2 и 3 елементы масива, а 3 нету.

если я два раза создам перед нулевым, то тот который был первым - станет третьим. суть проблемы ясна?
 
 Top
OrmaJever
Отправлено: 19 Апреля, 2011 - 20:41:04
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




Да суть ясна. Тогда лутше педавать параметром this
CODE (htmlphp):
скопировать код в буфер обмена
  1. <script>
  2. function asd(x) {
  3.         var list = document.getElementById('list');
  4.         var newListElem = document.createElement('div');
  5.         newListElem.innerHTML = 'New elem before ' + x.innerHTML;
  6.         newListElem.onclick = "asd(this);return false;";
  7.  
  8.         list.insertBefore(newListElem, x);
  9. }
  10. </script>
  11. <div id="list">
  12.         <div onClick="asd(this);return false;">First</div>
  13.         <div onClick="asd(this);return false;">Second</div>
  14. </div>

Проверил и немного изменил. Так надо?

(Отредактировано автором: 19 Апреля, 2011 - 20:57:57)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
haveFun
Отправлено: 19 Апреля, 2011 - 21:10:50
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




да, спасибо, но только после а не перед %)
кстати вот это
CODE (javascript):
скопировать код в буфер обмена
  1. newListElem.onclick = "asd(this);return false;";

отказывается работать почему-то

(Отредактировано автором: 19 Апреля, 2011 - 21:32:24)

 
 Top
OrmaJever
Отправлено: 19 Апреля, 2011 - 21:39:03
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




haveFun пишет:
отказывается работать почему-то

Что значит отказывается работать? В последней опере проверял всё работает


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
haveFun
Отправлено: 19 Апреля, 2011 - 21:59:11
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




OrmaJever пишет:
haveFun пишет:
отказывается работать почему-то

Что значит отказывается работать? В последней опере проверял всё работает

вот и я говорю, почему-то...
в четвертом огнелисе при нажатии на новый див ничего не происходит.
в опере действительно добавляются новые дивы.

можно как-нибудь реализовать ф-ию insertAfter, которой не существует, а то insertBefore ну совсем не вариант?

отсюда ничего не понял, что за входные параметры...
Цитата:
Как и getElementsByClass, этой функции почему-то нет в стандарте DOM. Возможно, чтобы избежать дублирования функционала, т.к. insertAfter реализуется всего одной строчкой.

CODE (javascript):
скопировать код в буфер обмена
  1. function insertAfter(parent, node, referenceNode) {
  2.     parent.insertBefore(node, referenceNode.nextSibling);
  3. }
 
 Top
OrmaJever
Отправлено: 19 Апреля, 2011 - 22:08:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




haveFun пишет:
в четвертом огнелисе при нажатии на новый див ничего не происходит.
в опере действительно добавляются новые дивы.

getElementsByClass в опере тоже работает прекрасно, а вот за другие браузеры ручатся не могу.
haveFun пишет:
сюда ничего не понял, что за входные параметры...

Чесно сказать я не очень знаю Js, просто раньше нужно было вот и вычитал про insertBefore, но я уверен что insertAfter так же можно написать но я немогу подсказать. Напиши на форум http://javascript[dot]ru/ там точно помогут!

(Отредактировано автором: 19 Апреля, 2011 - 22:09:01)



-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
haveFun
Отправлено: 21 Апреля, 2011 - 02:50:36
Post Id



Гость


Покинул форум
Сообщений всего: 102
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




OrmaJever пишет:
haveFun пишет:
в четвертом огнелисе при нажатии на новый див ничего не происходит.
в опере действительно добавляются новые дивы.

getElementsByClass в опере тоже работает прекрасно, а вот за другие браузеры ручатся не могу.

в огнелисе сработала такая конструкция:
CODE (javascript):
скопировать код в буфер обмена
  1. newListElem.onclick = function() {
  2.         asd(this);
  3.         return false;
  4. }

(Отредактировано автором: 21 Апреля, 2011 - 02:51:52)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB