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

HTML+CSS+JavaScript

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

 

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

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

тема: Ограничение кол-ва сообщений на странице (innerHTML)

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

 
 автор: GлюК   (19.02.2006 в 17:29)   письмо автору
 
   для: 12345   (18.02.2006 в 00:26)
 

Всем спасибо, я разобрался!!!

   
 
 автор: 12345   (18.02.2006 в 00:26)   письмо автору
 
   для: GлюК   (17.02.2006 в 22:44)
 

Там 2 фрейма? тогда задача обширнее (хотя ненамного). Давайте решим эту часть с удалением
<div id=divChat>
    <div>*0</div>
    <div>*1</div>
    <div>*2</div>
    <div>*3</div>
    <div>*4</div>
</div>
<input type=button onclick=ff() value=Удалить_ноду_номер><input id=i1 value=3 size=3>
<SCRIPT>
    d=document
ff=function(){o=d.getElementById('divChat');
    if(o.childNodes.length>(v=d.getElementById('i1').value)){
        o.removeChild(o.childNodes(v));
    }else alert(v+' - нет такого номера');
}    
</SCRIPT>
Пример удаляет выбранный номер ноды. Если из другого фрейма надо вставлять, пользуетесь др.методами из спр. по ссылке.

   
 
 автор: GлюК   (17.02.2006 в 22:44)   письмо автору
 
   для: 12345   (17.02.2006 в 02:05)
 

Во первых, у меня же отправляется в другой фрейм, и просто document не катит, а через parent... не работает. И вообще у меня почему-то не удаляется.(я пробовал в этом же фрейме выводить и уже в нём удалять). А можно так удалять:

document.getElementsByTagName('DIV')[i].removeChild()

т.е. без главного div'a, ведь, если выводить в этом же фрейме, этот див отсутствует!
И ещё: переменная i это элемент массива (число) или же id div'a???

   
 
 автор: 12345   (17.02.2006 в 02:05)   письмо автору
 
   для: GлюК   (16.02.2006 в 22:01)
 

Это я понял и привёл пример.
В цикле удаляются document.getElementsByName('divChat').childNodes[i].removeChild().

Или document.getElementsByName('divChat').getElementsByTagName('DIV')[i].removeChild()

   
 
 автор: GлюК   (16.02.2006 в 22:01)   письмо автору
 
   для: 12345   (15.02.2006 в 20:27)
 

Мне в самой обработке надо. Сейчас объясню суть. У меня все сообщения новые записываются в одну переменную (через php) так:

$nov=$nov<div id=..>..новое сообщение..</div>

при это я высчитываю кол-во новых сообщений.
Потом я присваиваю jav'овской переменной значение переменной с новыми сообщениями:

var nov='<?echo"$nov"?>';

Дальше вычитываются сообщения из рабочего фрейма:

bilo=parent.frames.m.ppp.innerHTML;

Соединяю их:

mes=nov+bilo;

А как дальше удалить из них последние n сообщений, где n-ранее высчитанное кол-во новых сообщений???

   
 
 автор: 12345   (15.02.2006 в 20:27)   письмо автору
 
   для: GлюК   (15.02.2006 в 17:22)
 

> как вычислить кол-во div'ов в переменной?
В строке? Сделать поиск: s.find(/<div//ig) , см рег. выражения вS
Но зачем тебе строка, если считаются в объекте так, как я только что привёл?

document.getElementsByName('divChat').getElementsByTagName('DIV').length

Axxill: в твоём варианте надо строго следить за тем, чтобы ни символа лишнего не было между дивами в коде, ни комментария.

   
 
 автор: Axxil   (15.02.2006 в 17:32)   письмо автору
 
   для: GлюК   (15.02.2006 в 17:22)
 

Главный блок

var main = document.getElementById('mainblock');
Считаем количество строк в нём (divов):

var strings =main.childNodes;
var num = strings.length; 

   
 
 автор: GлюК   (15.02.2006 в 17:22)   письмо автору
 
   для: 12345   (14.02.2006 в 19:34)
 

Идея понятна, буду пробовать! Кстати, как вычислить кол-во div'ов в переменной?

   
 
 автор: 12345   (14.02.2006 в 19:34)   письмо автору
 
   для: Axxil   (14.02.2006 в 18:35)
 

Или объединить чат в общий div id=divChat и опрашивать длину массива -

a=document.getElementsByName('divChat').getElementsByTagName('DIV');
if(a.length>100) - удалять ноды в 'divChat' -  removeChild() 
Внутри дива - другие дивы сообщений.

См. док. по DOM:

   
 
 автор: Axxil   (14.02.2006 в 18:35)   письмо автору
 
   для: GлюК   (14.02.2006 в 18:23)
 

А как сообщения организованы?
довольно просто можно сделать так
блок чата:
<div id='mainblock'></div>
каждое сообщение это тоже блок со своим id
<div id='mess1'></div>
<div id='mess2'></div>
скрипт (схематично)

<script>
function addString(){
  var main = document.getElementById('mainblock');  
  var newStr = document.createElement("div");
  newStr.id='mess1';
  newStr.innerHTML='text';
  // вставляем в начало блока
  main.insertBefore(newStr,main.firstChild);
  // удаляем последнюю строку
  main.removeChild(main.lastChild); 
}
</script>

Естественно ведётся счётчик строчек.
Это всё схематично на коленке. если заинтересует можем досконально разобраться.

   

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

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

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