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

HTML+CSS+JavaScript

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

 

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

вид форума:
Линейный форум Структурный форум

тема: Удаление из body дочерних элементов
 
 автор: coloboc66   (08.09.2006 в 12:33)   письмо автору
 
 

Мне нужно удалить всех "детей" в body и установить вместо них одного нового сына. Для этого пишу так:

var div1=document.createElement('div');
div1.innerHTML="<p>Контейнер 1</p>"
document.body.appendChild(div1);
var div2=document.createElement('div');
div2.innerHTML="<p>Контейнер 2</p>"
document.body.appendChild(div2);
var div3=document.createElement('div');
div3.innerHTML="<p> Новый контейнер</p>"
for (i=0;i<document.body.childNodes.length;i++) document.body.removeChild(document.body.childNodes(i));
document.body.appendChild(div3);

Но при этом последний сын не удаляется, что естественно, т.к. здесь document.body.childNodes.length равно единице. Если же я напишу

for (i=0;i<=document.body.childNodes.length;i++) 

то выскакивает ошибка "Недопустимый аргумент". А как мне решить эту проблему?
Спасибо.

   
 
 автор: RMW   (08.09.2006 в 13:41)   письмо автору
 
   для: coloboc66   (08.09.2006 в 12:33)
 

Тут дело в том, что массив и свойство length после каждого
удаления элемента изменяется поэтому идёт расколбас.
Можно так:

while(document.body.childNodes.length)
{
  var l = document.body.childNodes.length-1;
  document.body.removeChild(document.body.childNodes(l));
}

   
 
 автор: 12345   (08.09.2006 в 14:11)   письмо автору
 
   для: coloboc66   (08.09.2006 в 12:33)
 

А как вы их по полу определяете?

   
 
 автор: Padonak   (08.09.2006 в 15:18)   письмо автору
 
   для: 12345   (08.09.2006 в 14:11)
 

[поправлено модератором]

   
 
 автор: coloboc66   (08.09.2006 в 15:45)   письмо автору
 
   для: Padonak   (08.09.2006 в 15:18)
 

Раз слово "тег" мужского рода, значит- сын. Правда мать (body) среднего рода, но это уже совсем другая история...

   
 
 автор: Padonak   (09.09.2006 в 00:23)   письмо автору
 
   для: coloboc66   (08.09.2006 в 15:45)
 

[поправлено модератором]

   
 
 автор: RMW   (09.09.2006 в 12:35)   письмо автору
 
   для: Padonak   (09.09.2006 в 00:23)
 

> емайо я давно так не ржал :-)))))))
"Смеяться, право, не грешно
над тем, что кажется смешно" ©

Но в вашем случае больше
напоминает "Смех без причины..." :-))))

   
 
 автор: Padonak   (09.09.2006 в 13:18)   письмо автору
 
   для: RMW   (09.09.2006 в 12:35)
 

RMW да я уже давно понял что тут все суровые парни у которых сводит мимические мышцы при попытке улыбнуцо

   
 
 автор: RMW   (09.09.2006 в 14:13)   письмо автору
 
   для: Padonak   (09.09.2006 в 13:18)
 

И ничего не сводит))))

         #####          
      ###     ###       
     #           #      
   ##             ##    
   #               #    
  #                 #   
 #                   #  
 #    #         #    #  
 #                   #  
#                     # 
#                     # 
#                     # 
#  #                  # 
#  ##              #  # 
 #  ##            ## #  
 #   ####       ##   #  
 #      #########    #  
  #                 #   
   #               #    
   ##             ##    
     #           #      
      ###     ###       
         ##### 

   
 
 автор: Padonak   (09.09.2006 в 17:54)   письмо автору
 
   для: RMW   (09.09.2006 в 14:13)
 

:-))) это кажется называется ASCII-art? :-)

   
 
 автор: RMW   (09.09.2006 в 19:53)   письмо автору
 
   для: Padonak   (09.09.2006 в 17:54)
 

Кажется так.
Правда в исполнении
ASCIIPic.exe :)

   
 
 автор: coloboc66   (20.09.2006 в 13:54)   письмо автору
 
   для: RMW   (09.09.2006 в 19:53)
 

А вот проблемка кажись на эту же тему: в чате вывожу сообщения в <fiedset>. В результате fiedset заполняется тегами <p>. Мне нужно ограничить в нем число сообщений. Я это делаю так:

var count_msg=9;//устанавливаем ограничитель
 if(document.getElementById('field_chat1').childNodes.length>count_msg)
   {
   count_msg1=document.getElementById('field_chat1').childNodes.length;
    for(i=count_msg;i<count_msg1;i++) document.getElementById('field_chat1').removeChild(document.getElementById('field_chat1').childNodes(i));
   }

Но снова выскакивает ошибка Недопустимый аргумент. Не могу сообразить, как ее устранить.

   
 
 автор: katty   (20.09.2006 в 15:28)   письмо автору
 
   для: coloboc66   (20.09.2006 в 13:54)
 

<style type ="text/css">
<!--
.child {
width:100px;
height:20px;
background:#fff;
border: solid 1px #ff4500;
text-align:center;
}
-->
</style>
<body>
<div id = "field_chat" style="color:black;"></div>
</body>

<script language="JavaScript" type="text/javascript">
<!--
var limit= 9;//ограничитель
var block = document.getElementById('field_chat');
for(var i = 0; i < 12; i++){
var child = document.createElement("p");
child.className = "child";
child.appendChild(document.createTextNode(i));
if(block.childNodes.length >= limit){
alert('превышение лимита');break;
} else {
alert('лимит не превышен');
}
block.appendChild(child);
//alert(block.childNodes.length);
}

-->
</script>

   
 
 автор: coloboc66   (20.09.2006 в 15:57)   письмо автору
 
   для: katty   (20.09.2006 в 15:28)
 

Это не то, что мне нужно. У меня сообщения должны добавляться вверх без ограничений, а устаревшие нижние сообщения должны удаляться.

   
 
 автор: katty   (20.09.2006 в 17:36)   письмо автору
 
   для: coloboc66   (20.09.2006 в 15:57)
 

может примерно так:


<style type ="text/css">
<!--
#field_chat{
    color:black; 
    border: 1px solid #ff0000; 
    width: 110px; 
    padding-left: 5px;
}
.child {
    width:100px;
    height:20px;
    background:#fff;
    border: solid 1px #ff4500;
    text-align:center;
}
-->
</style>
<body>
<div id = "field_chat" style=""></div>
</body>
<script language="JavaScript" type="text/javascript">
<!--
var limit= 9;//устанавливаем ограничитель
var block = document.getElementById('field_chat');
    for(var i = 0; i < 9; i++){
        var child = document.createElement("p");
        child.className = "child";
        child.appendChild(document.createTextNode(i));
        alert('add message');
        alert(typeof block.insertBefore);
        block.insertBefore(child, block.childNodes[block.childNodes.length-i]);
    }
    var p = prompt("add new message?","yes");
    var newChild = document.createElement("p");
    newChild.className = "child";
    newChild.appendChild(document.createTextNode("new!"));
    if(p == "yes"){
        block.insertBefore(newChild, block.childNodes[block.childNodes.length-i]);
        if(block.childNodes.length > limit){
        /*    alert('лимит исчерпан');*/
            block.removeChild(block.childNodes[block.childNodes.length-1]);
        }
    }


-->
</script>

   
 
 автор: RMW   (20.09.2006 в 17:43)   письмо автору
 
   для: coloboc66   (20.09.2006 в 13:54)
 

Где-то так. Не проверял.

var count_msg=9;
var parent_msg=document.getElementById('field_chat1'); 
var childrens_msg=parent_msg.childNodes; 
   
while(childrens_msg.length>count_msg)parent_msg.removeChild(childrens_msg.item(childrens_msg.length-1));

И лучше не обращаться к массивам с помощью
круглых скобок. Или [ ] или item()

   
 
 автор: coloboc66   (20.09.2006 в 18:03)   письмо автору
 
   для: RMW   (20.09.2006 в 17:43)
 

Спасибо.

   
Rambler's Top100
вверх

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