繁体   English   中英

控制台返回未定义变量,但变量为

[英]Console returns that a var isn't defined, but it is

我基本上具有此代码。单击div时,它将加载该段落并将其插入twitch api url。 该脚本应该可以正常工作,但是发生的事情是在fadeOut之后div保持为空。 控制台返回未定义twitchData的错误,但已定义。 因此它应该像这样工作:单击div->了解单击了哪个div-<fadeOut + empty()div->获取段落文本->在twitchApi链接等内部替换它。

$('.games > div').click((e) => {
    var gameDiv = $(this); // Get which div was clicked here
    $('#twitch').children().fadeOut(500).promise().then(function() {
        $('#twitch').empty();
        $(function() {
            var i = 0;
            var gameName = $(e.target).text().replace(' ', '%20'); // Get the game name
            console.log(gameName);
            var twitchApi = "https://api.twitch.tv/kraken/streams?game=" +gameName; // Build the URL here
            var twitchData;
            $.getJSON(twitchApi, function(json) {
                twitchData = json.streams;
                setData()
            });
        });

        function setData() {
            var j = twitchData.length > (i + 9) ? (i + 9) : twitchData.length; for (; i < j; i++) {
                var streamGame = twitchData[i].game;
                var streamThumb = twitchData[i].preview.medium;
                var streamVideo = twitchData[i].channel.name;
                var img = $('<img style="width: 250px; height: 250px;" src="' + streamThumb + '"/>');
                $('#twitch').append(img);
                img.click(function() {
                    $('#twitch iframe').remove()
                    $('#twitch').append( '<iframe style="width: 600px;" src="http://player.twitch.tv/?channel=' + streamVideo + '"></iframe>');
                });
            }
        }
        $('#load').click(function() {
            setData();
        });
    });
});

这是一个范围问题。 您需要将“ twitchData”传递到setData函数中。 现在,它仅在您的click事件中定义。

$('.games > div').click((e) => {
    var gameDiv = $(this); // Get which div was clicked here
    $('#twitch').children().fadeOut(500).promise().then(function() {
        $('#twitch').empty();
        $(function() {
            var i = 0;
            var gameName = $(e.target).text().replace(' ', '%20'); // Get the game name
            console.log(gameName);
            var twitchApi = "https://api.twitch.tv/kraken/streams?game=" +gameName; // Build the URL here
            $.getJSON(twitchApi, function(json) {
                setData(json.streams)
            });
        });

        function setData(twitchData) {
            var j = twitchData.length > (i + 9) ? (i + 9) : twitchData.length; for (; i < j; i++) {
                var streamGame = twitchData[i].game;
                var streamThumb = twitchData[i].preview.medium;
                var streamVideo = twitchData[i].channel.name;
                var img = $('<img style="width: 250px; height: 250px;" src="' + streamThumb + '"/>');
                $('#twitch').append(img);
                img.click(function() {
                    $('#twitch iframe').remove()
                    $('#twitch').append( '<iframe style="width: 600px;" src="http://player.twitch.tv/?channel=' + streamVideo + '"></iframe>');
                });
            }
        }
    });
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM