Страницы: 1
возможнео это и не возможно ео всеже
как данные DOMXML вставит в HTMLDocument, я имею в виду что XML содержит правельный HTML, к примеру <tr><td>1х</td><td>2х</td></tr>
простым appendChild не получается вроде структура правельная выходит но браузер не воспренимает тяги и пишет просто содержимое 1х2х
я делаю пока так
document.getElementById("tabl").innerHTML = convStr.serializeToString(newRoot)
но я предпологаю так что переводя сперва в STRING а потом формирую по строке обьект ( .innerHTML = STRING) я выполняю не нужные дествия связанные с конвертацие и потом при формировании еше и проверкой провельности хмл в STRING
есть ли другой правельный вареант
Отсутствует
vflash
Не сочтите за оффтоп, но учитывая количество орфографических и грамматических ошибок в русском тексте, возникают большие сомнения в правильности написания и XMLкода (или он всё же HTML?).
Благодарю алфавит за любезно предоставленные буквы.
Отсутствует
если ты сильно умный то буть добр не мучий людей своее гинеальностью
п.с.
XML корректен HTML тоже , и я вроде ясно вырозился что в XML Содержится корректный HTML
А мож ны имееш ввиду ошибки вроде "document.getElementById("tabl").innerHTML = convStr.serializeToString(newRoot)" или "XML", "HTML"
,enm lj,h yt nt negb yf 'njv ajhevt kz 'njuj tcnm cgtwbfkmyst vtcnf lkz lt,bkjd
Достаточно прочитать пункт 3.7 в правилах, и станет все ясно. Замечание.
RED
Отсутствует
...простым appendChild не получается вроде структура правельная выходит но браузер не воспренимает тяги и пишет просто содержимое 1х2х...
А DOM Inspector показывает, что 1x2x - это не просто текст. Всё вставляется так, как и нужно. Ну, разве что, пространстов имён указать - правильнее будет:
А чем не нравится
? Нормальный вариант.
А вот за это:
,enm lj,h yt nt negb yf 'njv ajhevt kz 'njuj tcnm cgtwbfkmyst vtcnf lkz lt,bkjd
порекомендую модератору сделать тебе замечание.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
наверно приведу пример что я делаю пока я на таком вареанте остановился но всеже хотел обойти обойти ".innerHTML" .
doc = new XMLHttpRequest();
sclDom = document.implementation.createDocument("", "", null);
convStr = new XMLSerializer();
doc.open("GET", "http://server/xml3.xml", false);
doc.send(null);
docxml = doc.responseXML;
tabl = docxml.getElementsByTagName("tr");
newRoot = document.createElement('tbody');
fragment = sclDom.createDocumentFragment()
function downrow() {
if (document.getElementById("tabl")) {
if (tabl[x]) {
newRoot.appendChild(tabl[x]);
if (newRoot.getElementsByTagName("tr").length > 16) {newRoot.removeChild(newRoot.getElementsByTagName("tr")[0]); };
document.getElementById("tabl").innerHTML =newRoot.innerHTML;
// x =x+1;
} else {
doc.open("GET", "http://server/xml3.xml", false);
doc.send(null);
docxml = doc.responseXML;
tabl = docxml.getElementsByTagName("tr");
// alert(x)
x = 0;
};
};
};
window.setInterval(downrow, 80);
<table border="1px" width="100%">
<tr>
<td width="40%">88845</td>
<td width="30%">83</td>
<td>83</td>
</tr>
<tr>
<td>88845</td>
<td>83</td>
<td>83</td>
</tr>
<tbody id="tabl" >
<tr>
<td>88845</td>
<td>83</td>
<td>83</td>
</tr>
<tr>
<td>3xxxxxxxxxxxxxxxxxxx</td>
<td>3xxxxxxxxxxxxx</td>
<td>4xxxxxx</td>
</tr>
</tbody>
</table>
<?xml version="1.0" encoding="windows-1251"?>
<table>
<tr>
<td>2004-07-20 09:56 </td>
<td>sdhsdh</td>
<td>dsfhgdfg544</td>
</tr>
<tr>
<td>2004-07-20 09:56 </td>
<td>dfghsdfhbb dfsgdfgcxvbcvnbxcvn</td>
<td>dfgsdfgs dfgd</td>
</tr>
</table>
******************************************************
как видете я использую innerHTML хочу чтобы через appendChild
но как я писал выше получаю 1х2х те просто текстовое содержание , хотя в ff я выделяю то что получил смотрю код тама все правельно , сохраняю в фаил открываю выводит правельно
я так думаю что простым присоединение нельзя к хтмл обьектам присоединить хмл
использовать хнтмл , возможно еше не пробовал но нужно всеже xml и чтота неверится что пойдет но всеже посмотрю, попробую
а вопрос всеже в начале был как к HtmlObj "присоединить" XmlObj ,не спроста они всеже разные,
Отсутствует
можно ещё так
function domtoE4X(e) { var s=new XMLSerializer().serializeToString(e); s=s.replace(/<\?[^<]*\?>/,''); return new XML(s); } var x=new XMLHttpRequest(); x.open('GET','testxml.xml',false); x.send(null); document.getElementById('forxml').innerHTML=domtoE4X(x.responseXML);
Отредактировано Rion (07-12-2005 10:17:50)
Gentoo Linux
Отсутствует
...хочу чтобы через appendChild
но как я писал выше получаю 1х2х те просто текстовое содержание...
vflash, повторяю ещё раз: это НЕ текстовое содержание. Это просто выглядит как текстовое содержание. Вся трабла в том, что <tr>, указанные в xml не являются элементами html, поэтому и отображаются неверно. Укажи пространство имен xhtml для <tr> в своём xml, и всё будет отображаться как нужно:
<?xml version="1.0" encoding="windows-1251"?> <table> <tr xmlns="http://www.w3.org/1999/xhtml"> <td>2004-07-20 09:56 </td> <td>sdhsdh</td> <td>dsfhgdfg544</td> </tr> <tr xmlns="http://www.w3.org/1999/xhtml"> <td>2004-07-20 09:56 </td> <td>dfghsdfhbb dfsgdfgcxvbcvnbxcvn</td> <td>dfgsdfgs dfgd</td> </tr> </table>
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
Rion
мне не лень было смотреть твой код , да кстати нечего особого ты им не поведал миру и кстати ты не знаеш про responseText?
а вот антон говарит истену, сделал я xhtml и все как по маслу , я предпологал что обьекты отлечаются потому не получалось одно добавить в другое
и теперь у меня получилось чтота вроде этого но пока не окончательно конечно еше много надо добавить для того чтоб работало как было задумано это у меня скрол таблицы, данные динамически подгружаются с сервера и получается чтота вроде прокрутки
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <title></title> </head> <script> doc = new XMLHttpRequest(); convStr = new XMLSerializer(); doc.open("GET", "http://server/xml3.xml", false); doc.send(null); docxml = doc.responseXML; tabl = docxml.firstChild.getElementsByTagName("tr"); x = 0; function uprow() { if (document.getElementById("tabl")) { if (tabl[x]) { newRoot = document.getElementById("tabl"); newRoot.insertBefore(tabl[x],newRoot.getElementsByTagName("tr")[0]) maxrow = newRoot.getElementsByTagName("tr").length; if (maxrow > 20) { newRoot.removeChild(newRoot.getElementsByTagName("tr")[maxrow-1]); }; } else { doc.open("POST", "http://server/xml3.xml", false); doc.send(null); docxml = doc.responseXML; tabl = docxml.firstChild.getElementsByTagName("tr"); x = 0; }; }; }; function downrow() { if (document.getElementById("tal")) { if (tabl[0]) { newRoot = document.getElementById("tabl"); newRoot.appendChild(tabl[0]); if (newRoot.getElementsByTagName("tr").length > 20) { newRoot.removeChild(newRoot.getElementsByTagName("tr")[0]); }; } else { doc.open("POST", "http://server/xml3.xml", false); doc.send(null); docxml = doc.responseXML; tabl = docxml.firstChild.getElementsByTagName("tr"); x = 0; }; }; }; function startrow() { if (document.getElementById("tal")) { if (tabl[0]) { newRoot = document.getElementById("tabl"); newRoot.appendChild(tabl[0]); if (newRoot.getElementsByTagName("tr").length > 20) { newRoot.removeChild(newRoot.getElementsByTagName("tr")[0]); }; } else { window.clearInterval(scroltaim); scroltaim = false; }; } ; }; scroltaim = false; scroltaim = window.setInterval(startrow, 15); </script> <body> <table border="0" cellpadding="2px" cellspacing="0" width="100%" id="tal"> <tr bgcolor="#003399"> <td width="40%" height="22" bgcolor="#003399"> <div align="center" ><font color="#FFFFFF"><strong>Ôàìèëèÿ È.Î.</strong></font></div></td> <td width="48%"> <div align="center"><font color="#FFFFFF"><strong>Àäðåñ</strong></font></div></td> <td > <div align="center"><strong><font color="#FFFFFF">Òåëåôîí</font></strong></div></td> </tr> <tr height="8px"> <td class="und1" bgcolor="#009933" onMouseOver="javascript:if (!scroltaim) {scroltaim = window.setInterval(uprow, 60);};" onMouseOut="javascript:window.clearInterval(scroltaim);scroltaim=false" > <img scr="" width="1px" height="1px"> </td> <td class="und1"><img scr="" width="1px" height="1px"></td> <td class="und1"><img scr="" width="1px" height="1px"></td> </tr> <tbody id="tabl"> </tbody> <tr height="8px"> <td bgcolor="#009933" onMouseOver="javascript:if (!scroltaim) {scroltaim = window.setInterval(downrow, 60);};" onMouseOut="javascript:window.clearInterval(scroltaim);scroltaim=false"></td> <td></td> <td></td> </tr> </table>
ну а что примерно в XMLе я уже показывал ,
у меня тут вопрос образовался не понял пока почему так работает но всеже работает. у меня есть
tabl = docxml.firstChild.getElementsByTagName("tr");
и при каждом "такте" таймера я добавляю элемент из tabl , я вот не понял почему я вставляю tabl[0] или tabl[x] у меня происходит при следуюшем обрашении "такте" я из tabl беру следуюший элемент хоть даже если tabl[0]
не совсем корректно обьяснил но сами взгляните на код где у меня tabl[x] а x у меня всегда 0 а всеровно все работает как надо
мож кто знает способ чтобы както лудше оптемезировать код для повышения скорости работы , дело в том что это будет работать на слабых машинах а потому каждый такт на счету
Отсутствует
...
не совсем корректно обьяснил но сами взгляните на код где у меня tabl[x] а x у меня всегда 0 а всеровно все работает как надо ...
Опыт:
... alert (tabl [x + 1]); newRoot. appendChild (tabl [x]); alert (tabl [x + 1]); ...
показывает, что именно все работает как надо, а вот если добавить x=x+1, то как раз и не будет как надо работать. Элемент после appendChild "изымается" из массива.
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
если appendChild изымает то тогда чтобы это не происходило то надо добовлять клон , я правельно понял?
Зачем ? Работает же Даже переменную инкрементировать не нужно. Просто, учесть на будущее, чтобы "жука" не поймать
Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!
Отсутствует
vflash, про responseText знаю, но на форумах говорят тчо штука глючная в отношении кодировок, поэтому эксперементировать не стал. к тому же привел способ преобразоавния DOM XML в E4X XML, а из E4X можно легко, без какого либо гемороя выцепить любой контент и куда угодно его вставить.
Gentoo Linux
Отсутствует
vflash, если вставлять с помощью innerHTML то браузер сам распарсит код в соответсвии с доктипом самым подходящим образом. В вашем же коде очень много лишнего мусора, поэтому мне и лень было его изучать.
PS не надо строить из себя мега умника
Gentoo Linux
Отсутствует
Страницы: 1