Цель состоит в том, чтобы отобразить список URL-адресов на странице HTML.Список извлекается из другого файла (в настоящее время в формате XML).
Валидатор: Какая разметка 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>
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 (да, это моя собственная страница) Спасибо заваше внимание.