|
|
|
| У меня сообщения выводятся через innerHTML (чат). Надо сделать так, чтобы при появлении нового сообщения, последнее из уже имеющихся на странице исчезало. Т.е на странице всегда должно быть, допустим, 100 сообщений. | |
|
|
|
|
|
|
|
для: 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>
|
Естественно ведётся счётчик строчек.
Это всё схематично на коленке. если заинтересует можем досконально разобраться. | |
|
|
|
|
|
|
|
для: Axxil
(14.02.2006 в 18:35)
| | Или объединить чат в общий div id=divChat и опрашивать длину массива -
a=document.getElementsByName('divChat').getElementsByTagName('DIV');
if(a.length>100) - удалять ноды в 'divChat' - removeChild()
| Внутри дива - другие дивы сообщений.
См. док. по DOM: | |
|
|
|
|
|
|
|
для: 12345
(14.02.2006 в 19:34)
| | Идея понятна, буду пробовать! Кстати, как вычислить кол-во div'ов в переменной? | |
|
|
|
|
|
|
|
для: 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)
| | > как вычислить кол-во div'ов в переменной?
В строке? Сделать поиск: s.find(/<div//ig) , см рег. выражения вS
Но зачем тебе строка, если считаются в объекте так, как я только что привёл?
document.getElementsByName('divChat').getElementsByTagName('DIV').length
Axxill: в твоём варианте надо строго следить за тем, чтобы ни символа лишнего не было между дивами в коде, ни комментария. | |
|
|
|
|
|
|
|
для: 12345
(15.02.2006 в 20:27)
| | Мне в самой обработке надо. Сейчас объясню суть. У меня все сообщения новые записываются в одну переменную (через php) так:
$nov=$nov<div id=..>..новое сообщение..</div>
|
при это я высчитываю кол-во новых сообщений.
Потом я присваиваю jav'овской переменной значение переменной с новыми сообщениями:
var nov='<?echo"$nov"?>';
|
Дальше вычитываются сообщения из рабочего фрейма:
bilo=parent.frames.m.ppp.innerHTML;
|
Соединяю их:
А как дальше удалить из них последние n сообщений, где n-ранее высчитанное кол-во новых сообщений??? | |
|
|
|
|
|
|
|
для: GлюК
(16.02.2006 в 22:01)
| | Это я понял и привёл пример.
В цикле удаляются document.getElementsByName('divChat').childNodes[i].removeChild().
Или document.getElementsByName('divChat').getElementsByTagName('DIV')[i].removeChild() | |
|
|
|
|
|
|
|
для: 12345
(17.02.2006 в 02:05)
| | Во первых, у меня же отправляется в другой фрейм, и просто document не катит, а через parent... не работает. И вообще у меня почему-то не удаляется.(я пробовал в этом же фрейме выводить и уже в нём удалять). А можно так удалять:
document.getElementsByTagName('DIV')[i].removeChild()
|
т.е. без главного div'a, ведь, если выводить в этом же фрейме, этот див отсутствует!
И ещё: переменная i это элемент массива (число) или же id div'a??? | |
|
|
|
|
|
|
|
для: 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>
| Пример удаляет выбранный номер ноды. Если из другого фрейма надо вставлять, пользуетесь др.методами из спр. по ссылке. | |
|
|
|
|
|
|
|
для: 12345
(18.02.2006 в 00:26)
| | Всем спасибо, я разобрался!!! | |
|
|
|