Что-то я не фтыкаю что не так: нужно вывести список, а выводится только первый элемент, а затем заменяется на последний, в результате получается список из одного элемента со значением последнего ... Как будто браузер не успевает вслед за циклом создавать DOM иерархию...
Пробовал только в IE, так как в скрипте используется ActiveX....
В боди:
...
<ol id="list_files"></ol>
В скрипте:
...
var oU2; // Это указатель на список ol
var oLi = document.createElement("li");
var oA = document.createElement("a");
var oTxt = document.createTextNode("xxx");
function makeList() // запускается по onload
{
var oCurLi;
var oCurA;
oU2 = document.getElementById("list_files");
for(var i=0; i < iii; i++)
{
oCurLi = oU2.appendChild(oLi); // add Li
oTxt.nodeValue = dict.name;
oCurA=oCurLi.appendChild(oA); // add A
oCurA.appendChild(oTxt);
}
}
Не успевают отображаться динамически созданные узлы
Модератор: Duncon
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
- document.createElement нужно вызывать каждый раз, чтобы создавать новые обьекты, иначе действительно будут меняться значения старых
- appendChild я бы вызывал в обратном порядке (не знаю, насколько это существенно, но наверняка надёжнее), для того, чтобы при добавлении элемента li в тело документа, вся его внутренняя структура уже была готова и показывалась сразу (а не добавлялась в процессе видимости)
- a без аттрибута href не отображается браузерами
- код проверенный на FF, в Windows перегружаться лень
<head>
<title>list</title>
<script type="text/javascript">
var oU2; // Это указатель на список ol
function makeList() // запускается по onload
{
oU2 = document.getElementById("list_files");
for(var i=0; i < 10; i++) {
var oTxt = document.createTextNode("xxx");
var oA = document.createElement("a");
var oLi = document.createElement("li");
oTxt.nodeValue = i;//dict.name;
oA.setAttribute("href", oTxt.nodeValue);
oA.appendChild(oTxt);
oLi.appendChild(oA); // add A
oLi = oU2.appendChild(oLi); // add Li
}
}
</script>
<body onLoad="makeList()">
<ol id="list_files"></ol>
</body>
</html>[/syntax]
Oscar,
спасибо!
А то я сдуру считал, что "абстрактный" узел тупо копируется, а сам остается в памяти (раз указатель на него живет), поэтому что бы не копить в памяти тысячи ненужных объектов так и потсупил, оказывается разработчики об этом сами позаботились...
спасибо!
А то я сдуру считал, что "абстрактный" узел тупо копируется, а сам остается в памяти (раз указатель на него живет), поэтому что бы не копить в памяти тысячи ненужных объектов так и потсупил, оказывается разработчики об этом сами позаботились...
- Oscar
- Сообщения: 963
- Зарегистрирован: 29 май 2004, 13:44
- Откуда: Мюнхен (рожден в Киеве)
- Контактная информация:
как знать, как знать ...__Yuri__ писал(а):оказывается разработчики об этом сами позаботились...
ФФ почему-то жрёт минимум 50 Мб оперативки, а в "хорошие" времена может и за сотню уходить ...