2016-03-26 18 views
0

Bu ödevi sınıf için bitirmeye çalışıyorum ve bu işlevselliği işe almakta zorluk çekiyorum ve bunun nasıl yapılacağına dair bir fikir edinmeyi umuyorum. HTML sayfası, "XML verilerini al" yazan bir düğme içeren bir formdan oluşur. Bu düğmeye tıklandığında, xml dosyası XML httprequest (bu, tüm yerel) kullanılarak okunur. Bu xml dosyası, 3 farklı şehir için hava durumu verilerinden oluşur.Açılır menüyü xml verileriyle doldurmak için işlev? Javascript + XML

<stationdata weatherdate="2015-12-30" location="Calgary"> 
    <maxtemp>-2.7</maxtemp> 
    <mintemp>-18.2</mintemp> 
    <totalrain>0</totalrain> 
    <totalsnow>0</totalsnow> 
</stationdata>' 

3 farklı şehir için yılın her günü için öyle görünüyor. Programımı şehirler arasında okumaya ve 3 şehir (Calgary, Charlottetown, Ottawa) isimleriyle açılan menüyü oluşturmaya çalışıyorum. Şimdiye kadar bir nedenle sadece bir şehir okuyabilirim.

Herhangi bir yardım için teşekkür ederiz.

function getDoc() { 
    var xhttp = new XMLHttpRequest(); 
    xhttp.onreadystatechange = function() { 
     if (xhttp.readyState == 4 && xhttp.status == 200) { 
     alert("XML file obtained"); 
     myFunction(xhttp); 
     //var data = xhttp.responseXML; 
     } 
    }; 
    xhttp.open("GET", "weatherdata.xml", true); 
    xhttp.send(); 

    function myFunction(xml) { 
    var xmlDoc = xml.responseXML; 
    var i = 0; 
    var x = xmlDoc.getElementsByTagName("stationdata")[i]; 
    var txt = x.getAttribute("location"); 
    document.getElementById("generatedDataDiv").innerHTML = txt; 

    var len = xmlDoc.documentElement.childNodes; 

    for (i = 0; i < len.length; i++) { 
     document.getElementById("generatedDataDiv").innerHTML = txt; 
     //i++; 
    } 

    } 

} 

Ben bir şekilde döngü bunu gerektiğine inanıyorum ama nasıl görmek mümkün değilim:

Bu defa ne var. XML dosyası, bu verilerin 6000 ~ satırını içeriyor, sadece dosyalardan konum alabilmem ve daha sonra şehirler için bana 3 isim vermesi gereken kopyaları ortadan kaldırmam gerekiyor. Sadece şu ana kadar bir tane alıyorum.

cevap

0
document.getElementById("generatedDataDiv").innerHTML = txt; 

XML'le henüz javascript ile uğraşmadım, ancak her döngüde innerHTML'in üzerine yazmanız oldukça açık.

Muhtemelen örneğin ekranın ilk önce yinelenen ortadan kaldırmak olmalıdır:

var uniqueArray = []; 
len.forEach(function(element, index, array){ 
    if(uniqueArray.indexOf(element) === -1){ 
    uniqueArray.push(element); 
}}); 
//uniqueArray should now contain your three cities. 

Sonra, sonra açılan doldurmak için basit bir döngü yapmak.

+0

Teşekkürler! Bunun işe yaradığını buldum. –

İlgili konular