Replace 刽子手,把信放好

Replace 刽子手,把信放好,replace,onclick,Replace,Onclick,所以在我的刽子手游戏中我已经安静了很多,但是很明显,当一封信被点击的时候,我会把信放在上面。 我做了两个变量,其中一个是“word”,它保存了必须猜测的单词。 另一个是“hiddenword”,它的长度基本上与“word”相同,但字母替换为下划线,如图所示: function checkLetter(buchstabe) { if(word.includes(buchstabe)) { hiddenWord = hiddenWord.replace(/_/g, buchs

所以在我的刽子手游戏中我已经安静了很多,但是很明显,当一封信被点击的时候,我会把信放在上面。 我做了两个变量,其中一个是“word”,它保存了必须猜测的单词。 另一个是“hiddenword”,它的长度基本上与“word”相同,但字母替换为下划线,如图所示:

function checkLetter(buchstabe) {
    if(word.includes(buchstabe)) {
        hiddenWord = hiddenWord.replace(/_/g, buchstabe);
        console.log("right");
        document.getElementById("response").innerHTML = "Great guess!";
    }
    else {
        console.log("wrong")
        lives = lives -1;
        document.getElementById("response").innerHTML = "Sorry, the letter you chose is not part of the hidden word.";
    }
}
现在我告诉你的两个变量:

let word = "hallo123";//I set the variable to something random, because it randomly changes on start
let lives = 8; //Ignore this one, its just how many tries the user has left.
let hiddenWord;//and I didnt declare this one yet, because it will be only underscores

所以我的计划是,如果有人点击一个字母(这里是我的可点击字母的一个例子,也称为divs),它实际上是单词的一部分,它会用这个字母替换特定的下划线

<div class="layout" onclick="checkLetter('a');">a</div>
    <div class="layout" onclick="checkLetter('b');">b</div>
    <div class="layout" onclick="checkLetter('c');">c</div>
    <div class="layout" onclick="checkLetter('d');">d</div>
    <div class="layout" onclick="checkLetter('e');">e</div>
    <div class="layout" onclick="checkLetter('b');">b</div>
    <div class="layout" onclick="checkLetter('c');">c</div>
    <div class="layout" onclick="checkLetter('d');">d</div>
    <div class="layout" onclick="checkLetter('e');">e</div>
a
B
C
D
E
B
C
D
E

好的!因此,在查看您的PasteBin后,我可以看到您发布的图像底部的#wordToGuess div是一个div,包含x个下划线,前面有空格(#),具体取决于用户需要猜测的单词长度

当启动
checkLetter(buchstabe)
函数并满足
if(word.includes(buchstabe))
条件时,为什么不执行以下操作:

//HTML

<div id="wordToGuess"> _ _ _</div>
因此,您的功能将变成:

function checkLetter(buchstabe) {
    if(word.includes(buchstabe)) {
        hiddenWord = hiddenWord.replace(/_/g, buchstabe);
        console.log("right");
        document.getElementById("response").innerHTML = "Great guess!";
        // Update underscores
        var currentHiddenWord = document.getElementById('wordToGuess').textContent;
        var newHiddenWord = currentHiddenWord.replace(' _', buchstabe);
        document.getElementById('wordToGuess').textContent = newHiddenWord;
    }
    else {
        console.log("wrong")
        lives = lives -1;
        document.getElementById("response").innerHTML = "Sorry, the letter you chose is not part of the hidden word.";
    }
}
在猜测成功后,代码现在将wordToGuess div中的当前文本设置为一个名为currentHiddenWord的变量,用正确猜测的字母(buchstabe)替换第一个“u”,并将其设置为一个名为newHiddenWord的变量,然后用newHiddenWord变量的值替换wordToGuess div中的文本


这能满足你的需要吗?

你能再解释一下你到底想达到什么目的吗?您是否需要帮助以单击的字母替换(最左边可用的)下划线?嘿,Max,在我的变量“Word”中,是一个字符串,其中包含用户应该猜测的单词。当点击字母时,它会向用户显示他点击的字母是否是单词的一部分,到目前为止还不错。但是如果字母是单词的一部分,下划线应该变成用户猜测的字母。看看我贴的图片,你可能会更容易理解我的担忧。欢迎!这很有道理,谢谢!您是否有可能将所有HTML发布到JSFIDLE中,这样我就可以知道如何编写答案了?特别是页面中带下划线的部分?嘿,Max,因为带下划线的部分主要发生在我的JavaScript中,所以我在一个文档中发布了我的HTML和JavaScript代码。我写了一篇关于每个函数的简短评论,别担心它很简单,也不会太长,你可以在这里找到代码:)嘿,Max,是的,你理解我所做的是正确的,但是“buchstabe”应该是一个参数,所以函数可以处理每个字母。我无法真正获得隐藏字的.text内容,因为我的隐藏字尚未定义,对吗?如果您将我代码的最后3行放在If(word.includes(buchstabe))中的checkLetter函数中它应该达到你需要的:)我更新了我的答案,让你明白我的意思。首先,非常感谢你的贡献!我真的很感激,但我认为你犯了一个小错误。您正在编写“document.getElementById”(“hiddenWord”),但您能读取这样的变量吗?它在我的浏览器控制台中给了我另一个错误:hangman.html:146 Uncaught TypeError:无法读取null的属性“textContent”。第146行正好是“document.getElementById”(“hiddenWord”)。这就是hiddenWord在顶部的“声明”方式:让hiddenWord;(它不是真正声明的,我想这就是它无法阅读它的原因。非常抱歉,它应该是“wordToGuess”而不是隐藏的Word。我已经更新了我的答案。我已经添加了代码应该做什么的解释@doctorx22
function checkLetter(buchstabe) {
    if(word.includes(buchstabe)) {
        hiddenWord = hiddenWord.replace(/_/g, buchstabe);
        console.log("right");
        document.getElementById("response").innerHTML = "Great guess!";
        // Update underscores
        var currentHiddenWord = document.getElementById('wordToGuess').textContent;
        var newHiddenWord = currentHiddenWord.replace(' _', buchstabe);
        document.getElementById('wordToGuess').textContent = newHiddenWord;
    }
    else {
        console.log("wrong")
        lives = lives -1;
        document.getElementById("response").innerHTML = "Sorry, the letter you chose is not part of the hidden word.";
    }
}