Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript刽子手:用正确的字母替换空格的麻烦_Javascript_Jquery - Fatal编程技术网

Javascript刽子手:用正确的字母替换空格的麻烦

Javascript刽子手:用正确的字母替换空格的麻烦,javascript,jquery,Javascript,Jquery,所以我在游戏的某个特定部分遇到了麻烦。以下是我的初始变量: var words = ["sugar","banana","hulk"]; var guessLeft = 12; var wrongGuess = []; var hiddenWord = []; var hiddenWordText = document.getElementById("hiddenword-text"); var chosenWord = words[Math.floor(Math.random() * word

所以我在游戏的某个特定部分遇到了麻烦。以下是我的初始变量:

var words = ["sugar","banana","hulk"];
var guessLeft = 12;
var wrongGuess = [];
var hiddenWord = [];
var hiddenWordText = document.getElementById("hiddenword-text");
var chosenWord = words[Math.floor(Math.random() * words.length)];
到目前为止,它正确地从我的数组中选择了一个随机单词,并将它们替换为与所选单词长度相同的下划线。我是这样做的:

for (i = 0; i < chosenWord.length; i++) {
    hiddenWord.push("_");
    hiddenWordText.textContent = hiddenWord.join(" ");
}
for(i=0;i
现在,我遇到的问题是,当它发现我的猜测是否与字母匹配时,如何用猜测的字母替换正确的下划线索引

这就是我目前所拥有的,我不确定我是否走上了正确的道路。有人有什么建议吗?或者你能指引我正确的方向吗

document.onkeyup = function(event) {
    var userGuess = event.key;

    if (chosenWord.indexOf(userGuess) >= 0){
        for (var i = 0; i < wordLength; i++){
            if (chosenWord[i] == userGuess){
                hiddenWord[i] == userGuess;

                hiddenWordText.textContent = hiddenWord[i] + hiddenWord;
            }
        }
    }
    else {
        guessLeft = guessLeft - 1;
    }
}
document.onkeyup=函数(事件){
var userGuess=event.key;
if(chosenWord.indexOf(userGuess)>=0){
for(var i=0;i
与其试图找出隐藏单词中哪些下划线需要替换为真实字母,不如使用迄今为止已拾取的字母数组,将它们放入正则表达式中的负字符集中,然后从真实输入单词中,用下划线替换不在该集中的所有字符。例如:

const chosenWord='banana';
常数猜测=[];
//当用户猜测一个字母时,将其推到猜测:
//例如,用户猜测“a”和“b”:
猜。推('a');
猜。推('b');
//然后,当需要显示部分填充的单词时:
constpattern=newregexp(
“[^'+猜测.连接(“”)+']',“g”
);
//在这种情况下,模式将如下所示:
//[^ab]
//也就是说,匹配任何不是“a”或“b”的字符
//用下划线替换既不是“a”也不是“b”的所有字符:
const wordToDisplay=chosenWord.replace(模式,'.');
console.log(wordToDisplay);

//hiddenWordText.textContent=wordToDisplay您的代码中有几个错误

使用
=
代替
=
进行变量赋值

hiddenWordText
textContext
替换为
hiddenWordText。在循环后加入(“”)
,其中显示了正确猜测的单词。以前,您在每次循环迭代时都会不断替换
textContext
,这将忽略在以前的迭代中找到的匹配项

if (chosenWord.indexOf(userGuess) >= 0){
    for (var i = 0; i < chosenWord.length; i++){
        if (chosenWord[i] == userGuess){
            hiddenWord[i] = userGuess;
        }
    }
    hiddenWordText.textContent = hiddenWord.join(" ");
}
if(chosenWord.indexOf(userGuess)>=0){
for(var i=0;i
那么,您当前的代码有什么问题?当我正确猜出单词的一个字母时,它会在现有下划线旁边添加另一个下划线,而不是显示正确的字母。谢谢!这真的很简单,现在可以使用了:)这类问题的一个提示,如果您不确定哪里出了问题,请尝试在相关变量的每个步骤或循环迭代中使用
console.log()
打印。然后,您可以确定问题,并查看逻辑的哪一部分是错误的。