首页 > 解决方案 > 如何阻止我的程序连续两次输出相同的内容?

问题描述

因此,我创建了这个 HTML 页面,其中包含一些 JavaScript。我有这个按钮,可以输出六个表情符号中的一个。它工作得很好,然后我添加了一些代码来阻止程序连续两次输出相同的表情符号,但它没有任何区别,我不知道为什么。
这是我的代码:

function randEmoji()
        {
            var oldEmoji = emoji;
            var emojiList = [";)", ":D", "xD", ":O", ":X", ":P"];
            var emoji = emojiList[Math.floor(Math.random() * emojiList.length)];

            if (oldEmoji == emoji)
            {
                randEmoji();
            }
            else
            {
                document.getElementById("emojiText").innerHTML = "Look how fun! ---> " + emoji + " <--- An emoji!";
                console.log(emoji);
            }
        }

我不是很擅长编程,也不知道是什么导致了这个问题。
请帮我!

标签: javascriptdebugging

解决方案


您必须在函数外部声明变量并将它们设置在内部。否则它们的值会在每个函数调用中被重置。

尝试这个:

var oldEmoji = '';
var emoji = '';
var emojiList = [";)", ":D", "xD", ":O", ":X", ":P"];

function randEmoji() {
    oldEmoji = emoji;
    emoji = emojiList[Math.floor(Math.random() * emojiList.length)];

    if (oldEmoji == emoji) {
        randEmoji();
    } else {
        console.log(emoji);
    }
}


var i = 0;
while (i < 20) {
    randEmoji();
    i += 1;
}


推荐阅读