Вопросы для создания вложенного списка, извлеченного из XML-файла и отображенного в xHTML - PullRequest
1 голос
/ 21 июля 2011

Цель состоит в том, чтобы отобразить список URL-адресов на странице HTML.Список извлекается из другого файла (в настоящее время в формате XML).

  1. Валидатор: Какая разметка xHTML является правильной для списка, сгенерированного JavaScript, и все же проверяется правильно?Я предполагаю, что причина в том, что JavaScript-код внутри [ul] не принят.Это правильно?Есть ли другое решение?Приведенный ниже код создает ожидаемый список, но создает предупреждение (см. Ниже, 2.).

    <ul>list A
    <li>item A1</li>
    <li>item A2</li>        
    <ul>List B
        <li>item B1</li>
        <script type="text/javascript">/* <![CDATA[ */
            if (window.XMLHttpRequest)
                {  xmlhttp=new XMLHttpRequest();  } // code for IE7+, Firefox, Chrome, Opera, Safari                        
            else
                {  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }       // code for IE6, IE5    
            xmlhttp.open("GET","/test-code/panorama-list2.xml",false);
            //  xmlhttp.open("GET","/test-code/panorama-list2.xml",true);   //this does not work. xmlDoc is null.
            xmlhttp.send();
    
            xmlDoc=xmlhttp.responseXML;
            var x=xmlDoc.getElementsByTagName("item");
            for (i=0;i<x.length;i++)
            {   document.write('<li class="menu2">'+'<a href="');
                document.write(x[i].getElementsByTagName('link')[0].childNodes[0].nodeValue);
                document.write('">');
                document.write(x[i].getElementsByTagName('description')[0].childNodes[0].nodeValue);
                document.write('</li>');    }       
            //]]></script>      //This is line: 136
    </ul>
    

  2. JavaScript, используемый в кодеВыше вызывается с использованием синхронного метода и, таким образом, создается предупреждение: «Несбалансированное дерево было написано с использованием document.write (), что приводит к повторному анализу данных из сети. Для получения дополнительной информации https://developer.mozilla.org/en/Optimizing_Your_Pages_for_Speculative_Parsing / Source File: / test-code / index2.htm / Line: 136 "

Решение заключается в использовании асинхронного метода, аналогичного приведенному ниже коду, помещенному в раздел.Решение НЕ в том, чтобы просто установить 'true' в функции xmlhttp.open (..., ..., true);.

<script type="text/javascript">//<![CDATA[
function loadXMLDoc()
{
if (window.XMLHttpRequest)
  {  xmlhttp=new XMLHttpRequest();  }   // code for IE7+, Firefox, Chrome, Opera, Safari
else
  {  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  }     // code for IE6, IE5
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)

    xmlDoc = xmlhttp.responseXML;
      var txt = "";
      var txt1 = "";
      var x = xmlDoc.getElementsByTagName("item");

      for (i=0;i<x.length;i++)
      {
        txt = x[i].getElementsByTagName('description')[0].childNodes[0].nodeValue + "<br />";
        txt1 = x[i].getElementsByTagName('link')[0].childNodes[0].nodeValue + "<br />";
      }

    {
    document.getElementById("myDiv").innerHTML=txt;
    document.getElementById("myDiv1").innerHTML=txt1;
    }
  }
xmlhttp.open("GET","panorama-list2.xml",true);
xmlhttp.send();
}
//]]></script>

, которая позаботится о предупреждении.Я предполагаю, что решением было бы объединить эти 2 примера кода.

Вот что я пытаюсь: Переменные 'txt' и 'txt1' получают последнюю запись XML-файла.

Как мне получить все входы?Количество записей варьируется.

Вот большой вопрос:

Как создать правильный список, используя асинхронный метод, и получить результат, как в примере исходного кода, где список генерируетсяпройдя через XML-файл?В конце концов, есть другое, лучшее или более простое решение?Файл с данными для списка не должен быть частью разметки xHTML.

Наконец настоящая страница, использующая пример исходного кода.Список можно открыть, наведя курсор на кнопку в правом верхнем углу: http://www.halo -photographs.com / 2011-Cascata-da-Bernina / index.htm (да, это моя собственная страница) Спасибо заваше внимание.

1 Ответ

1 голос
/ 21 июля 2011

ваш код - суп ..

вам нужен рефакторинг, который

теперь с jquery

в загрузке страницы you

Вы должны положить что-то, как это

$(document).ready(function(){    

 BeforePrepareList();

}); 

function BeforePrepareList()
{
  var xmlRequest = XmlHttpRequestResolver();

  xmlhttp.onreadystatechange=function()
              {
                   if (xmlhttp.readyState==4 && xmlhttp.status==200)

                   var xmlDoc = xmlhttp.responseXML;
                   // you need parse string response a array or use xslt, the next
                   // is simple for each
                   ListSetting(xmlDoc);
               }
   xmlhttp.open("GET","panorama-list2.xml",true);
   xmlhttp.send();
}

function XmlHttpRequestResolver()
{
  if (window.XMLHttpRequest)
   return xmlhttp=new XMLHttpRequest();  // code for IE7+, Firefox, Chrome, Opera, Safari
  else
   return xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");     // code for IE6, IE5
}

function ListSetting(rawdata)
{     
  ListPopulate($("_PUT_YOUR_LIST_ID_HERE").get(0), rawdata);        
}


function ListPopulate(el, items) {
  el.options.length = 0;
  if (items.length > 0)
     el.options[0] = new Option('All', '');

  // THAT IS AN SIMPLE EXAMPLE, CHANGE FOR CREATE tag <a />
  $.each(items, function (index,item) {
    el.options[el.options.length] = new Option(item.[PROPERTY_A], item.[PROPERTY_B]);
 });    
}

and .....

больше информации здесь

вызвать xml и преобразовать http://www.ibm.com/developerworks/xml/library/x-ffox3/index.html Примеры запросов http http://www.jibbering.com/2002/4/httprequest.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...