чтение xml без жкуиерити
Здравствуйте! можно простой примерчик чтение файла xml;
Код:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml " lang="en" xml:lang="en"> <head> <title>dinamic select</title> <meta http-equiv="Content-type" content="text/html; charset=windows-1251" /> <meta http-equiv="Content-Language" content="ru-ru" /> <style type="text/css"> * { margin: 0; padding: 0; } #main { position: relative; left: 100px; top: 100px; } </style> <script type="text/javascript"><!-- var mv = new Array(); mv[0] = Array('выберите город'); mv[1] = Array('111','Белорусский','Казанский','Киевский','Курский','Октябрьский','Павелецкий','Рижский','Савеловский','Ярославский'); mv[2] = Array('222','Балтийский','Варшавский','Витебский','Ладожский','Московский','Финляндский'); function changetown() { var val1 = parseInt(document.forms[0].city.value); mva = mv[val1]; recity(); } function recity() { var sselect = document.forms[0].vokzal; for(i = sselect.length; i > 0; i--) { sselect.options[i] = null; } opt = new Array; for(i = 0; i < mva.length; i++) { sselect.options[i] = new Option(mva[i], (i)); }} //--> </script> </head> <body><div id="main"> <form> <select name="city" onchange="changetown();"> <option value="0"></option> <option value="1">Москва</option> <option value="2">Санкт-Петербург</option> </select> <select name="vokzal"><option>выберите город</option></select> </form> </div> </body></html> |
Цитата:
<?xml version="1.0" encoding="utf-8"?> <category> <book name="kat1"> <page name="111.php">data1</page> <page name="222.php">data2</page> <page name="333.php">data3</page> <page name="444.php">data4</page> </book> <book name="kat2"> <page name="111.php">data5</page> <page name="222.php">data6</page> <page name="333.php">data7</page> <page name="444.php">data8</page> </book> </category> <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> <xsl:template match="/"> <html> <body> <xsl:for-each select="category/book"> <ul> <xsl:value-of select="@name"/> <xsl:for-each select="page"> <li> <xsl:value-of select="." /> </li> </xsl:for-each> </ul> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Документ без названия</title> <style> li{ padding-left : 20px; list-style-type : none; } </style> <script> function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml2.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11 xhttp.send(""); return xhttp.responseXML; } function displayResult() { xml = loadXMLDoc("testXML.xml"); xsl = loadXMLDoc("testXSL.xsl"); // code for IE if (window.ActiveXObject || xhttp.responseType == "msxml-document") { ex = xml.transformNode(xsl); document.getElementById("example").innerHTML = ex; } // code for Chrome, Firefox, Opera else if (document.implementation && document.implementation.createDocument) { xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); resultDocument = xsltProcessor.transformToFragment(xml, document); document.getElementById("example").appendChild(resultDocument); } } </script> </head> <body onload="displayResult()"> <div id="example" /> </body> </html> |
что получилось
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> <xsl:template match="/"> <html> <body><select><option> <xsl:for-each select="category/book"> <ul> <xsl:value-of select="@name"/> <xsl:for-each select="page"> <li> <xsl:value-of select="." /> </li> </xsl:for-each> </ul> </xsl:for-each> </option> </select> </body> </html> </xsl:template> </xsl:stylesheet> я же правильно делаю? все изменение в xls файле? |
leon2009sp,
Смотря что именно вы хотите сделать. Я использовал неупорядоченный список просто для примера. Если надо в select засунуть все данные из тэгов <page> то надо так <?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="xs" version="2.0"> <xsl:template match="/"> <html> <body><select> <xsl:for-each select="category/book/page"> <option> <xsl:value-of select="." /> </option> </xsl:for-each> </select></body> </html> </xsl:template> </xsl:stylesheet> Ещё больше инфы тут http://htmlweb.ru/xml/xslt1.php |
select box как менять данные
пример в select1 висит book, а в select2 при выборе значение data1 появляются book2->page
а если выбрать data2 то в select2 появится book3 и Код:
<?xml version="1.0" encoding="utf-8"?> Код:
<xsl:value-of select="@value"/> спасибо! |
leon2009sp,
лучше на HTML показать, что именно хочется. Да и в xml если есть открывающий тэг, то обязательно должен быть закрывающий. Такие записи <page2 name="111.php" value=5>data5</page>неправильны. |
select box как менять данные
попробую объяснить
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml " lang="en" xml:lang="en"> <head> <title>dinamic select</title> <meta http-equiv="Content-type" content="text/html; charset=windows-1251" /> <meta http-equiv="Content-Language" content="ru-ru" /> <style type="text/css"> * { margin: 0; padding: 0; } #main { position: relative; left: 100px; top: 100px; } </style> <script type="text/javascript"><!-- var mv = new Array(); mv[0] = Array('выберите город'); mv[1] = Array('111','Белорусский','Казанский','Киевский','Курский','Октябрьский','Павелецкий','Рижский','Савеловский','Ярославский'); mv[2] = Array('222','Балтийский','Варшавский','Витебский','Ладожский','Московский','Финляндский'); function changetown() { var val1 = parseInt(document.forms[0].city.value); mva = mv[val1]; recity(); } function recity() { var sselect = document.forms[0].vokzal; for(i = sselect.length; i > 0; i--) { sselect.options[i] = null; } opt = new Array; for(i = 0; i < mva.length; i++) { sselect.options[i] = new Option(mva[i], (i)); }} //--> </script> </head> <body><div id="main"> <form> <select name="city" onchange="changetown();"> <option value="0"></option> <option value="1">Москва</option> <option value="2">Санкт-Петербург</option> </select> <select name="vokzal"><option>выберите город</option></select> </form> </div> </body></html> только данные нужно брать из xml Код:
mv[0] = Array('выберите город'); |
<?xml version="1.0" encoding="utf-8"?> <category> <book name="kat2"> <page2 name="111.php" value=1>data1</page2> <page2 name="111.php" value=2>data2</page2> </book> </category> ?> такая запись правельна? закрытие xml ?> |
leon2009sp,
Если нужна динамика, то тогда надо использовать навигацию по DOM дереву. testXML.xml <?xml version="1.0" encoding="utf-8"?> <category> <city name="Москва"> <station>Белорусский</station> <station>Казанский</station> <station>Киевский</station> <station>Курский</station> <station>Октябрьский</station> <station>Павелецкий</station> <station>Рижский</station> <station>Савеловский</station> <station>Ярославский</station> </city> <city name="Санкт-Петербург"> <station>Балтийский</station> <station>Варшавский</station> <station>Витебский</station> <station>Ладожский</station> <station>Московский</station> <station>Финляндский</station> </city> </category> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Документ без названия</title> <style> #station{ margin-left : 150px; } </style> <script> function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml2.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11 xhttp.send(null); return xhttp.responseXML; } document.addEventListener('DOMContentLoaded', function () { var xml = loadXMLDoc("testXML.xml"), selCity = document.querySelector('#city'), selStation = document.querySelector('#station'), i; [].forEach.call(xml.querySelectorAll('city'), function (el) { selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name'))) }) selCity.addEventListener('change', function () { selStation.options.length = 0 , i=0; [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station'), function (el) { selStation.add(new Option(el.textContent, ++i)); }) }) }) </script> </head> <body> <select id="city"><option selected>Выберите город</option></select> <select id="station"></select> </body> </html> http://pixs.ru/showimage/showpng_8266993_20819220.png |
а почему не сработало с с дивом?
<body> <select id="city"><option selected>Выберите город</option></select> <div id="station"></div> </body> с инпутом тоже не выводит |
leon2009sp,
потому что в 35 строке идет добавление опции именно в Select |
проба с инпутом
selinput = document.getElementById('#station2'),i; selinput.value (new Value(el.textContent, ++i)); нее?? :blink: и слово Option если ставишь маленькую "о", то ничего не работает, при этому все слова заменил на меленькую о... |
leon2009sp,
Цитата:
Цитата:
selinput.value += el.textContentи переменная i здесь не нужна. |
если по честному то я пробывал так:
27:selInput = document.getElementById('#station2'),i; 32:selInput.value.length = 0 , i=0; 35:selInput.value += el.textContent; с DIV тоже самое проделывал, но как я понял надо поменять еще что то :blink: |
так тоже:
div = document.getElementById('#station2'); selCity.addEventListener('change', function () { div.id = 0 , i=0; div.id += el.textContent; |
не доходит.. :cray:
<?php echo " <select id='city'><option selected>Выберите город</option></select> $primer='#station2'; "; echo id; ?> или здесь выбора нету? только через форму? |
leon2009sp,
Лучше описать что конкретно надо, может помогут. Пока какие-то непонятные попытки. |
пример скрипта
попробую рассказать: у меня есть файл index.php в него через #include в писаны файлы шапка.html поиск.html
index.php <div id=inf align=center> <div>"; include 'template/inf0.tpl'; echo "</div> <div>"; include 'template/inf1.tpl'; echo "</div> <div>"; //include 'template/inf2.tpl'; echo "</div> <div>"; include 'template/inf3.tpl'; echo "</div> <div>"; include 'template/inf4.tpl'; echo "</div> <div> </div> <div>"; include 'template/inf5.tpl'; echo "</div> <div> поиск.html :write: еще не добрался. где селект выбор городов. link.html <?php $xml = simplexml_load_file("xml/info.xml") or die("Error: Cannot create object"); echo "<table align=center border=0 cellpadding=8 cellspacing=8 width=80% class=link2> <tr>"; if(!empty($xml->book1->page)) { $agrs = $xml->book1->page; foreach ($agrs as $vals) { echo "<td><a href=$vals[name] class=link2>$vals</a></td>"; } } echo "</tr><tr>"; if(!empty($xml->book2->page)) { $agrs = $xml->book2->page; foreach ($agrs as $vals) { echo "<td><a href=$vals[name] class=link2>$vals</a></td>"; } } echo "</tr><tr>"; if(!empty($xml->book3->page)) { $agrs = $xml->book3->page; foreach ($agrs as $vals) { echo "<td><a href=$vals[name] class=link2>$vals</a></td>"; } } echo "</tr><tr>"; if(!empty($xml->book4->page)) { $agrs = $xml->book4->page; foreach ($agrs as $vals) { echo "<td><a href=$vals[name] class=link2>$vals</a></td>"; } } echo "</tr></table>"; ?> но файлов много пр: inf_omsk.tpl inf_moskva.tpl. inf_novosib.tpl теперь когда ставлю два когда script на динамический селект, то выбирается первый селект второй уже не работает. и если пр выбираешь один город то загрузка в div3,4 меняется. т.е. выбрал Москва загрузился файл inf_moscu.tpl... как только ставишь два скрипта то перестает работать, даже если они находятся в разных файлах |
понял как с формулировать:
в inf0.tpl код на выбор городов: <script> function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml2.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11 xhttp.send(null); return xhttp.responseXML; } document.addEventListener('DOMContentLoaded', function () { var xml = loadXMLDoc("xml/city.xml"), selCity = document.querySelector('#city'), selStation = document.querySelector('#station2'), i; [].forEach.call(xml.querySelectorAll('city'), function (el) { selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name'))) }) selCity.addEventListener('change', function () { selStation.options.length = 0 , i=0; [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station2'), function (el) { selStation.add(new Option(el.textContent, ++i)); }) }) }) </script> <div class=selectind><select id=city><option selected>Россия_1</option></select></div></td> <td> <div class=selectind>inf3_moscu.tpl</div> как загружать другие файлы? inf3_omsk.tpl inf3_novosib.tpl этот код содержится в inf0.tpl ---------------------- в файле inf2.tpl будет поиск т.е: <script> function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml2.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11 xhttp.send(null); return xhttp.responseXML; } document.addEventListener('DOMContentLoaded', function () { var xml = loadXMLDoc("xml/db.xml"), selCity = document.querySelector('#marka'), selStation = document.querySelector('#model'), i; [].forEach.call(xml.querySelectorAll('marka'), function (el) { selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name'))) }) selCity.addEventListener('change', function () { selStation.options.length = 0 , i=0; [].forEach.call(xml.querySelectorAll('marka[name=' + this.value + '] > model'), function (el) { selStation.add(new Option(el.textContent, ++i)); }) }) }) </script> <div class=new-select-style-wpandyou> <select id=marka><option selected>Выберите авто</option></select> </div></td> <td> <div class=new-select-style-wpandyou> <select id=model>Выберите Модель</select> </div> но когда эти два скрипта находятся в месте а include связывает страницу в целое. т.е. два скрипта на одной стрнице работают не правельно.. и не знаю как загрузить файлы inf3_gorod.tpl |
а также при выборе города должны загружаться ссылки в inf5.tpl. при выборе города:
пр: inf3_novosib.tpl значит ссылка будет novosib/ac/index.html. но пока она как ac/index.html |
<?xml version="1.0" encoding="utf-8"?> <category> <city name="Россия" link="db/russia/index.php"> <station2>inf3_rus.tpl</station2> </city> <city name="Омск" link="db/omsk/index.php"> <station2>tpl_omsk</station2> </city> <city name="Омск" link="db/novosib/index.php"> <station2>tpl_novosib</station2> </city> </category> |
Содержание xml/city.xml и xml/db.xml надо. Хотя бы небольшой макет с несколькими дефолтными значениями. И что это за файлы inf3_omsk.tpl inf3_novosib.tpl мне непонятно.
|
файл city.xml
<?xml version="1.0" encoding="utf-8"?> <category> <city name="Россия" link="db/russia/ac/index.php"> <station2>tpl_rus</station2> </city> <city name="Омск" link="acura.php"> <station2>tpl_omsk</station2> </city> </category> файл db.xml <?xml version="1.0" encoding="utf-8"?> <category> <cat_a category="Категория_A"> <marka name="AC" link="db/russia/ac/index.php"> <model>AC</model> <model>Cobra</model> </marka> <marka name="Acura" link="acura.php"> <model>CL</model> <model>CSX</model> </marka> <marka name="Alfa_Romeo" link="alfaromeo.php"> <model>145</model> <model>146</model> </marka> </cat_a> <cat_b category="Категория_B"> <marka name="Bentley" link="db/bentley.php"> <model>Arnage</model> <model>Azure</model> </marka> <marka name="BMW" link="bmw.php"> <model>1_Series</model> <model>2_Series</model> </marka> </category> tpl это простой файл html только расширение tpl . держи просил удалил |
пример файла inf0.tpl
<html> <head> <script> function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml2.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11 xhttp.send(null); return xhttp.responseXML; } document.addEventListener('DOMContentLoaded', function () { var xml = loadXMLDoc("xml/city.xml"), selCity = document.querySelector('#city'), selStation = document.querySelector('#station2'), i; [].forEach.call(xml.querySelectorAll('city'), function (el) { selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name'))) }) selCity.addEventListener('change', function () { selStation.options.length = 0 , i=0; [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station2'), function (el) { selStation.add(new Option(el.textContent, ++i)); }) }) }) </script> </head> <body> <?php echo " <div class=selectind><select id=city><option selected>Россия_1</option></select></div></td> <td> <div class=selectind> </div> ?> </body></html> |
leon2009sp,
и что на выходе должно получиться? Можно на словах, а можно и сверстать HTML. |
лучше на словах, а то еще километр кода :blink:
в inf0.tpl я выбираю город, значит в index.php в диве загружается inf3_*.tpl и город который выбрал, и в inf4.tpl ссылка должна меняться. пр: db/moscu/ac/index.php или db/novosib/ac/index.php я думал если в javascript выбирать город и передавать его. city=novosib; city=moscu; <marka name="AC" link="db/$city/ac/index.php"> не совсем, это чтобы понятней было: на самом деле так: $xml = simplexml_load_file("xml/db.xml") or die("Error: Cannot create object"); echo " <ul class=tops>"; foreach($xml->cat_a as $cat_a) { echo "<ol class=link1><font color=#ADADAB>{$cat_a['category']}</font></ol>"; foreach($cat_a->marka as $marka) { echo "<li align=left><a href={$marka['link']} class=link2>{$marka['name']}</a></li>"; } } echo "</ul><ul class=tops>"; foreach($xml->cat_b as $cat_b) { echo "<ol class=link1><font color=#ADADAB>{$cat_b['category']}</font></ol>"; foreach($cat_b->marka as $marka) { echo "<li align=left><a href={$marka['link']} class=link2>{$marka['name']}</a></li>"; } } echo "</ul><ul class=tops>"; значит в xml файле ссылка link=просто ac/index.php а в коде "<li align=left><a href={$city}/{$marka['link']} class=link2>{$city}/{$marka['name']}</a></li>"; $city выбирается через select в файле inf0.tpl (tpl - это чтобы не спутаться), но а так как все tpl файлы идут через include то они получаются одно целое. |
пример кода с вложением
Вложений: 1
теперь намного короче. так пойдет? (нашел вложение). :write:
может кому интересно будет! |
Блин, что-то я невпопад ляпнул ) Как это удалить?
|
чтобы два скрипта работали на одной странице правильно можно сделать так:
function loadXMLDoc(file_1) и function loadXMLDoc(file_2) |
это что перепробовал:
selCity.addEventListener('change', function () { selStation.options.length = 0 , i=0; [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station2'), function (el) { // selStation.add(new Option(el.textContent, ++i)); //selStation.id += el.textContent; //selStation = div.getElementsByTagName(el.getAttribute('name')) //selStation.div.id = el.textContent; //input.value = el.textContent; //$('#station2')=el.textContent; //selStation.add($('#station2').el.textContent; ) selStation.add += el.textContent }) но не выдает. |
<script> function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml2.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11 xhttp.send(null); return xhttp.responseXML; } document.addEventListener('DOMContentLoaded', function () { var xml = loadXMLDoc("xml/city.xml"), selCity = document.querySelector('#city'), selStation = document.querySelector('#station2'),i; // selStation = document.getElementById('#station2'),i; [].forEach.call(xml.querySelectorAll('city'), function (el) { // selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name'))) document.getElementById('sec1').innerHTML = el.getAttribute('name'),el.getAttribute('name'); }) selCity.addEventListener('change', function () { selStation.options.length = 0 , i=0; [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station2'), function (el) { // selStation.add(new Option(el.textContent, ++i)); document.getElementById('sec1').innerHTML = el.textContent; }) }) }) </script> <select id=city><option selected>33333333</option></select> <div id="sec1">123</div> ну где же косяк то |
в строке 22. , зачем?
|
это я пробовал по разному :blink: если строку 22 оставить то будет загружаться в див последние значение.
а если убрать то нифига не работает. на самом деле как тока не издевался: selStation.add('sec1');:blink: или вообще весь список файла вылезти в див. а ее строка 22 отвечает за чтение из файла сити, помещает от туда name в селект (в первый). |
это оставляю как есть!
selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name'))) а строчку вывода где selStation.add(new Option(el.textContent, ++i));заменяю на document.getElementById('sec1').innerHTML = el.textContent; и по идеи должно работать: <select id=city><option selected>11111111</option></select> <div id="sec1">123</div> |
по шагам:
<script> function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml2.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11 xhttp.send(null); return xhttp.responseXML; } загрузили хмль document.addEventListener('DOMContentLoaded', function () { var xml = loadXMLDoc("xml/city.xml"), selCity = document.querySelector('#city'), // selStation = document.querySelector('#station2'),i; selStation = document.getElementById('#station2'),i; [].forEach.call(xml.querySelectorAll('city'), function (el) { selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name'))) // document.getElementById('sec1').innerHTML = el.getAttribute('name'),el.getAttribute('name'); }) прошлись по сити и именам его а т.е. (name="Новосибирск") или (name="Москва") или name="ленинград". selCity.addEventListener('change', function () { selStation.options.length = 0 , i=0; //selStation.id.length = 0 , i=0; [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station2'), function (el) { // selStation.add(new Option(el.textContent, ++i)); // document.getElementById('sec1').innerHTML = el.textContent; // document.getElementById('station2').innerHTML = el.getAttribute('name'),el.getAttribute('name'),i; //selStation.add(el.textContent,++i); document.getElementById('sec1').innerHTML = '123123123'; }) }) }) </script> начиная с первой строки если выбрали то автоматом выбирается статион пр: <station2>tpl_novosib1</station2>. ХМЛЬ: <?xml version="1.0" encoding="utf-8"?> <category> <city name="Россия" link="db/russia/ac/index.php"> <station2>tpl_rus</station2> </city> <city name="Омск" link="acura.php"> <station2>tpl_omsk</station2> </city> <city name="Новосибирск" link="acura.php"> <station2>tpl_novosib1</station2> </city> </category> |
Цитата:
Цитата:
|
selStation = это как занесение в переменную. что то вроде var на delphi.
а sec1 - это как сектор блок. т.е. все что в sec1 отображается в див. document.getElementById('sec1') можно заменить на document.getElementById('station2') от этого ничего не поменяется. а вто "#" юмора не понял. то что много записей? как массив? |
если я делаю так:
selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name'))) document.getElementById('sec1').innerHTML = el.textContent; то выдает последний статион он у меня новосиб. но мне же нужно в цикл его тогда переношу: selCity.addEventListener('change', function () { selStation.options.length = 0 , i=0; [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station2'), function (el) { document.getElementById('sec1').innerHTML = el.textContent; }) |
все доперло :dance:
проверти на ошибки пожалуйста <script> function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml2.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); try { xhttp.responseType = "msxml-document" } catch (err) { } // Helping IE11 xhttp.send(null); return xhttp.responseXML; } document.addEventListener('DOMContentLoaded', function () { var xml = loadXMLDoc("xml/city.xml"), selCity = document.querySelector('#city'), // selStation = document.querySelector('#station2'),i; // elem = document.getElementById('my'); selStation = document.getElementById('station2'); [].forEach.call(xml.querySelectorAll('city'), function (el) { selCity.add(new Option(el.getAttribute('name'), el.getAttribute('name'))) }) selCity.addEventListener('change', function () { // selStation.options.length = 0 , i=0; [].forEach.call(xml.querySelectorAll('city[name=' + this.value + '] > station2'), function (el) { // selStation.add(new Option(el.textContent, ++i)); //document.getElementById('station2').innerHTML = el.textContent; selStation.innerHTML = el.textContent; }) }) }) </script> <select id=city><option selected>1111111</option></select> <div id=station2>333333</div> |
leon2009sp,
поздравляю :victory: |
Часовой пояс GMT +3, время: 18:40. |