123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- var request = new XMLHttpRequest()
- var selects = document.querySelector('.selects');
- var weatherDiv = document.querySelector('.weather');
- request.open('GET', 'https://raw.githubusercontent.com/David-Haim/CountriesToCitiesJSON/master/countriesToCities.json', true)
- request.onreadystatechange = function(){
- if (request.readyState != 4){
- return;
- }
- if (request.status == 200){
- var object = JSON.parse(request.responseText);
-
- var keys = Object.keys(object);
- var select = document.createElement("select");
- for (var i = 0; i < keys.length; i++) {
- var option = document.createElement("option");
- option.innerHTML = keys[i];
- option.value = keys[i];
- select.appendChild(option);
- }
- select.onchange = function(e){
- console.log(this.value)
- var select = document.createElement("select");
- for (var i = 0; i < object[this.value].length; i++) {
- var option = document.createElement("option")
- option.innerHTML = object[this.value][i];
-
- select.appendChild(option);
-
- }
- if(selects.children.length > 1){
- selects.replaceChild(select, document.getElementById("main").nextElementSibling);
- }
- else
- selects.appendChild(select);
- request.open('GET', "https://query.yahooapis.com/v1/public/yql?" + 'q=' + encodeURIComponent("select * from weather.forecast where woeid in (select woeid from geo.places(1) where text=\'" + select.value + "\') and u='c'") + '&format=json', true);
- console.log(this.value)
- request.onreadystatechange = function(){
- if(request.readyState === 4 && request.status === 200){
- console.log(JSON.parse(request.responseText));
- var obj = JSON.parse(request.responseText);
-
- var weather = obj.query.results.channel.item.description;
-
- var resWeather = weather.replace(/href|CDATA|[\!]|[\[]|[\]]/g,"");
- var resWeather2 = resWeather.slice(1,resWeather.length - 1);
- var resWeather3 = resWeather2.replace(/Full Forecast at Yahoo Weather/g,"");
- var resWeather4 = resWeather3.slice(0,resWeather3.length - 28);
- weatherDiv.innerHTML = resWeather4;
- console.log(resWeather4)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
- else if(request.readyState > 1 && request.readyState < 4){
- weatherDiv.setAttribute("heigt", "400px")
- weatherDiv.innerHTML = "loading...";
- }
- else if(request.status === 400){
- weatherDiv.innerHTML = "error 400";
- }
- }
- request.send();
- select.onchange = function(){
- request.open('GET', "https://query.yahooapis.com/v1/public/yql?" + 'q=' + encodeURIComponent("select * from weather.forecast where woeid in (select woeid from geo.places(1) where text=\'" + this.value + "\') and u='c'") + '&format=json', true);
- console.log(this.value)
- request.onreadystatechange = function(){
- if(request.readyState === 4 && request.status === 200){
- console.log(JSON.parse(request.responseText));
- var obj = JSON.parse(request.responseText);
-
- var weather = obj.query.results.channel.item.description;
-
- var resWeather = weather.replace(/href|CDATA|[\!]|[\[]|[\]]/g,"");
- var resWeather2 = resWeather.slice(1,resWeather.length - 1);
- var resWeather3 = resWeather2.replace(/Full Forecast at Yahoo Weather/g,"");
- var resWeather4 = resWeather3.slice(0,resWeather3.length - 28);
- weatherDiv.innerHTML = resWeather4;
- console.log(resWeather4)
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- }
- else if(request.readyState > 1 && request.readyState < 4){
- weatherDiv.setAttribute("heigt", "400px")
- weatherDiv.innerHTML = "loading...";
- }
- else if(request.status === 400){
- weatherDiv.innerHTML = "error 400";
- }
- }
- request.send();
- }
-
- }
- selects.appendChild(select);
- select.id = "main"
- }
- else {
- alert('shit happens: ' + xhr.status + ', ' + xhr.statusText );
- }
- }
- request.send()
|