2016-10-24 46 views
0

我的反應應用程序有問題,我無法從skycons兩次顯示相同的圖標。 我發現this post有同樣的問題。但是 - 當我複製解決方案,我得到一個錯誤bundle.js:130 Uncaught ReferenceError: e is not definedReferenceError:e沒有在React應用程序中定義

供參考,這是我的代碼

componentDidMount() { 
this.serverRequest = $.get(this.props.source, function (result) { 
    this.setState({ 
    forecast: result.currently, 
    daily: result.daily.data 
    }); 
    var icons = new Skycons({ 
     "color": "#666" 
    }), 
    list = [ 
     "clear-day", "clear-night", "partly-cloudy-day", 
     "partly-cloudy-night", "cloudy", "rain", "sleet", "snow", "wind", 
     "fog" 
    ], 
    i; 

    for (i = list.length; i--;) { 
    var weatherType = list[i], 
     elements = document.getElementsByClassName(weatherType); 
    for (e = elements.length; e--;) { 
     icons.set(elements[e], weatherType); 
    } 
    } 

    icons.play(); 
}.bind(this)); 
} 

我一直在努力,在申報代碼e不同的地方,但它並沒有爲我工作,即使代碼複製/粘貼

而且明顯錯誤是在這裏某處for (e = elements.length; e--;) {

+0

e在哪裏定義? 'var e;' – epascarello

+0

無處。它沒有在其他職位的代碼中定義,我似乎無法弄清楚我應該在使用它之前聲明它的位置 – frisk0

+0

... – epascarello

回答

0

我想你想要這樣的:

for (i = list.length; i--;) { 
    var weatherType = list[i], 
     elements = document.getElementsByClassName(weatherType); 
    for (var e = elements.length; e > 0; e--) { 
     icons.set(elements[e], weatherType); 
    } 
    } 
+0

這只是從skycons.js腳本返回一個控制檯錯誤 – frisk0

+0

我在這裏可以看到的最大區別是你應該有一個分隔符。 e> 0這應該防止永恆跑步。但是也應該包括i> 0。 – Urasquirrel

相關問題