чтение 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, время: 00:05. |