Полезная информация

Многие проблемы быстрее решаются поиском по форуму и чтением FAQ, чем созданием новой темы и томительным ожиданием ответа.

№106-12-2005 15:38:37

vflash
Участник
 
Группа: Members
Зарегистрирован: 21-11-2005
Сообщений: 40

как данные из DOMXMLDocument вставит HTMLDocument

возможнео это и не возможно ео всеже
как данные 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

есть ли другой правельный вареант

Отсутствует

 

№206-12-2005 20:13:26

Infant
   «»
 
Группа: Extensions
Откуда: Одесса
Зарегистрирован: 23-12-2004
Сообщений: 3671

Re: как данные из DOMXMLDocument вставит HTMLDocument

vflash
Не сочтите за оффтоп, но учитывая количество орфографических и грамматических ошибок в русском тексте, возникают большие сомнения в правильности написания и XMLкода (или он всё же HTML?).


Благодарю алфавит за любезно предоставленные буквы.

Отсутствует

 

№306-12-2005 21:06:32

vflash
Участник
 
Группа: Members
Зарегистрирован: 21-11-2005
Сообщений: 40

Re: как данные из DOMXMLDocument вставит HTMLDocument

если ты сильно умный то буть добр не мучий людей своее гинеальностью
п.с.
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

Отсутствует

 

№407-12-2005 00:17:33

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: как данные из DOMXMLDocument вставит HTMLDocument

vflash пишет

...простым appendChild не получается вроде структура правельная выходит но браузер не воспренимает тяги и пишет просто содержимое 1х2х...

А DOM Inspector показывает, что 1x2x - это не просто текст. Всё вставляется так, как и нужно. Ну, разве что, пространстов имён указать - правильнее будет:

Выделить код

Код:

<tr xmlns="http://www.w3.org/1999/xhtml"><td>1х</td><td>2х</td></tr>

А чем не нравится

Выделить код

Код:

document.getElementById("tabl").innerHTML = convStr.serializeToString(newRoot)

? Нормальный вариант.

А вот за это:

vflash пишет

,enm lj,h yt nt negb yf 'njv ajhevt kz 'njuj tcnm cgtwbfkmyst vtcnf lkz lt,bkjd

порекомендую модератору сделать тебе замечание.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№507-12-2005 06:52:14

vflash
Участник
 
Группа: Members
Зарегистрирован: 21-11-2005
Сообщений: 40

Re: как данные из DOMXMLDocument вставит HTMLDocument

наверно приведу пример что я делаю пока я на таком вареанте остановился но всеже хотел обойти обойти ".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 ,не спроста они всеже разные,

Отсутствует

 

№607-12-2005 09:41:36

Rion
Участник
 
Группа: Extensions
Откуда: Екатеринбург
Зарегистрирован: 15-06-2005
Сообщений: 227

Re: как данные из DOMXMLDocument вставит HTMLDocument

vflash, мне лень было смотреть ваш код, поэтому для эксперимента я написал свой, который у меня прекрасно работает.


Gentoo Linux

Отсутствует

 

№707-12-2005 10:13:26

Rion
Участник
 
Группа: Extensions
Откуда: Екатеринбург
Зарегистрирован: 15-06-2005
Сообщений: 227

Re: как данные из DOMXMLDocument вставит HTMLDocument

можно ещё так

Выделить код

Код:

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

Отсутствует

 

№807-12-2005 14:34:18

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: как данные из DOMXMLDocument вставит HTMLDocument

vflash пишет

...хочу чтобы через 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ентов на части порвет !!!

Отсутствует

 

№907-12-2005 16:56:18

vflash
Участник
 
Группа: Members
Зарегистрирован: 21-11-2005
Сообщений: 40

Re: как данные из DOMXMLDocument вставит HTMLDocument

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 а всеровно все работает как надо

мож кто знает способ чтобы както лудше оптемезировать код для повышения скорости работы , дело в том что это будет работать на слабых машинах а потому каждый такт на счету

Отсутствует

 

№1007-12-2005 17:35:18

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: как данные из DOMXMLDocument вставит HTMLDocument

vflash пишет

...
не совсем корректно обьяснил но сами взгляните на код где у меня  tabl[x] а x у меня всегда 0 а всеровно все работает как надо ...

Опыт:

Выделить код

Код:

...
                alert (tabl [x + 1]);
                newRoot. appendChild (tabl [x]);
                alert (tabl [x + 1]);
...

показывает, что именно все работает как надо, а вот если добавить x=x+1, то как раз и не будет как надо работать. Элемент после appendChild "изымается" из массива.


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№1107-12-2005 19:14:03

vflash
Участник
 
Группа: Members
Зарегистрирован: 21-11-2005
Сообщений: 40

Re: как данные из DOMXMLDocument вставит HTMLDocument

если appendChild изымает то тогда чтобы это не происходило то надо добовлять клон , я правельно понял?

Отсутствует

 

№1207-12-2005 20:15:58

Anton
Участник
 
Группа: Extensions
Откуда: от верблюда
Зарегистрирован: 14-12-2004
Сообщений: 3057
Веб-сайт

Re: как данные из DOMXMLDocument вставит HTMLDocument

vflash пишет

если appendChild изымает то тогда чтобы это не происходило то надо добовлять клон , я правельно понял?

Зачем ? Работает же :) Даже переменную инкрементировать не нужно. Просто, учесть на будущее, чтобы "жука" не поймать :)


Время настанет, время придет...
И лис кОнкурiентов на части порвет !!!

Отсутствует

 

№1308-12-2005 12:42:40

Rion
Участник
 
Группа: Extensions
Откуда: Екатеринбург
Зарегистрирован: 15-06-2005
Сообщений: 227

Re: как данные из DOMXMLDocument вставит HTMLDocument

vflash, про responseText знаю, но на форумах говорят тчо штука глючная в отношении кодировок, поэтому эксперементировать не стал. к тому же привел способ преобразоавния DOM XML в E4X XML, а из E4X можно легко, без какого либо гемороя выцепить любой контент и куда угодно его вставить.


Gentoo Linux

Отсутствует

 

№1408-12-2005 12:44:46

Rion
Участник
 
Группа: Extensions
Откуда: Екатеринбург
Зарегистрирован: 15-06-2005
Сообщений: 227

Re: как данные из DOMXMLDocument вставит HTMLDocument

vflash, если вставлять с помощью innerHTML то браузер сам распарсит код в соответсвии с доктипом самым подходящим образом. В вашем же коде очень много лишнего мусора, поэтому мне и лень было его изучать.

PS не надо строить из себя мега умника


Gentoo Linux

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]