не могу передать данные из текстового поля внутри цикла - PullRequest
0 голосов
/ 19 октября 2019

так что я получаю свои данные из Darksky api, у меня есть элементы, созданные с помощью циклов, и я обновляю их текстовое содержимое с помощью цикла массива данных api. всякий раз, когда я ищу, все остальное статическое меняет значения, а не внутри цикла

function search(ele) {
  if(event.key === 'Enter') {
    var url3 = 'https://geocode.xyz/' + ele.value +'?json=1'   //this is where i convert the long,lat to city name
    fetch(url3)
    .then(z => z.json())
    .then(z => {
      locres = (z.latt+','+z.longt)
      render()
      renderLoop()
    })     
  }
}
function renderLoop(){
  var proxyUrl = 'https://cors-anywhere.herokuapp.com/';
    var url1 = 'https://api.darksky.net/forecast/c34e122a56ae30a3090687878bce72c3/' + locres + '?units=auto'   //i have to use proxy because of CORS
    fetch(proxyUrl + url1)
    .then(x => x.json())
    .then(x => {
      var skycons = new Skycons({"color": "white"});
      skycons.set("icon0", Skycons = x.currently.icon);
      skycons.play();
      console.log(x.daily.data) 

      for(i=0;i<8;i++){
        console.log(x.daily.data[i].time)
        console.log(x.daily.data[i].summary)


        const divs = document.createElement('div')
        divs.className = ('week-day-container')
        const divsholdr = document.querySelector('.week-stage')

        const canv = document.createElement('canvas')
        canv.id = ('icons'+(i+1))
        canv.height = 100
        canv.width = 70


        divs.appendChild(canv)
        divsholdr.appendChild(divs)
        const dates = document.createElement('p')
        dates.textContent = x.daily.data[i].time
        divs.appendChild(dates)
        const temp = document.createElement('p')
        temp.textContent = 'High: '+ x.daily.data[i].temperatureHigh + 'Low: ' + x.daily.data[i].temperatureLow        
        divs.appendChild(temp)
        const summ = document.createElement('p')
        summ.textContent = x.daily.data[i].summary
        divs.appendChild(summ)
      }
      for(y=0;y<8;y++){
        skycons.set('icons'+(y+1), Skycons = x.daily.data[y].icon)
      }
    })
}
...