Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: insertBefore

Сообщения:  [1-10]   [11-15] 

 
 автор: btr   (15.01.2013 в 13:44)   письмо автору
 
   для: btr   (13.01.2013 в 18:44)
 

всем спасибо, все помогли :)

  Ответить  
 
 автор: btr   (15.01.2013 в 12:36)   письмо автору
 
   для: ЯСА   (15.01.2013 в 12:24)
 

да нет, написано, и несложно. но мало ли ;)

  Ответить  
 
 автор: ЯСА   (15.01.2013 в 12:24)   письмо автору
 
   для: btr   (15.01.2013 в 12:19)
 

ну конечно, передать хер123 - это же так сложно, нам же надо код товара - именно 123
а от хер'а избавиться, прописав id.substr (3) - это вообще суперсложно, этого же в книжке не написано, да?

  Ответить  
 
 автор: btr   (15.01.2013 в 12:19)   письмо автору
 
   для: ЯСА   (15.01.2013 в 01:47)
 

хочется легко и просто через свойство элемент.id передавать код товара, поэтому и тянет сделать его чисто цифирным. вероятно, можно это как-то по другому сделать? не подскажете?

  Ответить  
 
 автор: btr   (15.01.2013 в 12:10)   письмо автору
 
   для: ЯСА   (15.01.2013 в 01:32)
 

какой я невнимательный: в книжке : если вставляемый узел уже присутствует в дереве документа, он удаляется из дерева и вставляется в новую позицию.
действительно, ни про какой объект-родитель не сказано...
спасибо за объяснение.

  Ответить  
 
 автор: ЯСА   (15.01.2013 в 01:47)   письмо автору
 
   для: btr   (14.01.2013 в 23:22)
 

вы можете иметь на странице хоть двести двадцать два тега с одинаковым значением id

однако метод getElementById (значение_id) всегда вернёт только первый найденный в DOM'e такой тег
прочие двести двадцать один тег этому методу недоступны

и зачем вам иметь 221 тег с "фишкой", которой нельзя воспользоваться?

именно поэтому значение id на странице должно быть уникальным
-----

кроме того, значение id должно быть валидным, т.е. состоять из латинских букв любого регистра, арабских цифр и символа подчёркивания, причём начинаться должно с буквы

потому что при назначении id тегу всякий браузер автоматически создаёт объект-ссылку на этот тег с тем же именем
запустите в любом браузере и убедитесь:
<span id="myUniqueID">Привет!</span>
<script>
alert (myUniqueID.innerHTML);
</script>

кое-кто упорно назначает id только из одних цифр
а любители JQuery очень любят id, содержащий символ дефиса
и у первых, и у вторых нет понимания, что, например, alert (123.innerHTML) и alert (my-id.innerHTML) не работает и, следовательно, структуру DOM они своими назначениями идентификаторов ломают

  Ответить  
 
 автор: ЯСА   (15.01.2013 в 01:32)   письмо автору
 
   для: btr   (14.01.2013 в 18:40)
 

метод insertBefore () сам по себе ничего и никогда не проверяет

его предназначение - вставить виртуальный HTML-тег перед существующим HTML-тегом и вернуть ссылку на новый (ставший существующим) тег
------

метод insertBefore () "не волнует" - откуда именно взялся виртуальный тег: ему "по барабану" - создан "виртуал" клонированием существующего или создан вновь методом createElement ()
-------

по большому счёту объект, к которому применяется метод insertBefore () - он вовсе не нужен
вполне достаточным было бы указание только существующего HTML-тега, перед которым вставляется "виртуал"

однако всякий метод всегда работает на объекте, поэтому в данном случае исключительно формально "требуется" объект - и им всегда является родитель существующего HTML-тега, перед которым осуществляется "приживление"

т.е.
конструкция

ссылка_на_новый_тег = объект.insertBefore (ВИРТУАЛ_нового_тегасуществующий_тег);

всегда может быть заменена на

ссылка_на_новый_тег = существующий_тег.parentNode.insertBefore (ВИРТУАЛ_нового_тегасуществующий_тег);
------

в общем случае метод insertBefore () работает не только с тегами, но и вообще с нодами (коими могут быть текстовые ноды), но принцип работы с текстовыми нодами - тот же, что и с тегами

  Ответить  
 
 автор: btr   (14.01.2013 в 23:22)   письмо автору
 
   для: Sfinks   (14.01.2013 в 23:12)
 

интересная мысль.
правда, мне не совсем подходит.
к тому же, я тут подумал, и пришел к выводу, что перебор мне отнюдь не помешает, я в нем попутно еще одну задачу решу.
единственное: насколько это корректно - иметь в документе два дива с одинаковыми ид?

  Ответить  
 
 автор: Sfinks   (14.01.2013 в 23:12)   письмо автору
 
   для: btr   (14.01.2013 в 22:50)
 

Ну и все-равно не нужен цикл.
<html>
<head>
  <style>div{border:solid black 1px;padding:1px;margin:1px}</style>
  <script>
  
function a_node_copy(a_id){
  if((e=document.getElementById(a_id+'_copy'))==null){ 
    var e = document.getElementById(a_id).cloneNode(true);
    e.id=e.id+'_copy';
  } 
  div_2.insertBefore(e,div_2.firstChild); 
}
    
  </script>
</head>
<body>

<div>Первый div 
  <div id=a1 onclick="a_node_copy(this.id)">Копируемый div 1</div> 
  <div id=a2 onclick="a_node_copy(this.id)">Копируемый div 2</div> 
  <div id=a3 onclick="a_node_copy(this.id)">Копируемый div 3</div> 
</div>
<div id=div_2>Второй div</div>

</body>
</html>
или я опять не так понял?

  Ответить  
 
 автор: btr   (14.01.2013 в 22:50)   письмо автору
 
   для: Sfinks   (14.01.2013 в 22:38)
 

не было бы ничего проще, но нужно, чтобы исходный элемент остался в первом диве :)
следовательно, не происходит перемещения я имел ввиду в дереве потомков второго дива, просто путано объяснился :)

  Ответить  

Сообщения:  [1-10]   [11-15] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования