当前位置: 首页 > 知识库问答 >
问题:

如何更改char js的innerHTML

司徒骞尧
2023-03-14

我想做一个Hangman游戏,这样我就可以学习JavaScript,我不知道如何改变我在JS中做的char的innerHTML。所以当我知道字符串中是否包含猜测时,我想把表示正确猜测的行转换成一个字符,使它成为一个字符,但当我运行代码时,它把最后一行转换成正确猜测,当有新的猜测时,使它消失,并把行转换成第二个正确猜测。并且没有重新识别“o”(字符串中的最后一个字符),如果我犯了语法错误,我想道歉。

null

js lang-js prettyprint-override">//defineing the word
var a = 'hello';
// makes the lines 
for ( var i=0; i<a.length; i++){
        var letter = document.createElement("h3");
        letter.className = 'letter'+i;
        var j = 2*i+23;
        letter.style ="position: absolute;"+"top: 14%;"+"left: "+j+"%;";
        letter.innerHTML = "_";
        document.body.appendChild(letter);
    }  

//submit btn gets the input and if it's correct shows it, if it isn't correct than puts into a wrong words
function submt(a,letter){
    var inpt = document.getElementById('input');
    if (a.includes(inpt.value)){
        letter.innerHTML = a[a.indexOf(inpt.value)]; 
    }else {
        console.log('wrong')
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <title>Hangman</title>
    <link rel="stylesheet" href="style.css">
    <link rel="preconnect" href="https://fonts.gstatic.com">
    <link href="https://fonts.googleapis.com/css2?family=Yanone+Kaffeesatz:wght@500&display=swap" rel="stylesheet"> 
</head>
<body>
    <p class='letter'>Write the letter in here:</p>
    <p class='bad'> the wrong letters:</p>
    <p class='word'>the word:</p>
    <input type="text" class="input" id="input">
     <button class="sub" id='submit' onclick="submt(a,letter)">submit</button>
    <script src="script.js"></script>  
</body>
</html>

null

共有1个答案

漆雕安晏
2023-03-14

您正在将letter变量重置为最后一个h3元素。每个插槽都需要一个数组。

    //defineing the word
    var a = 'hello';
    // makes the lines
    var letters = []; 
    for ( var i=0; i<a.length; i++){
            var letter = document.createElement("h3");
            letter.className = 'letter'+i;
            var j = 2*i+23;
            letter.style ="position: absolute;"+"top: 14%;"+"left: "+j+"%;";
            letter.innerHTML = "_";
            document.body.appendChild(letter);
            letters.push(letter);
        }  

    //submit btn gets the input and if it's correct shows it, if it isn't correct than puts into a wrong words
    function submt(a,letter){
        var inpt = document.getElementById('input');
        if (a.includes(inpt.value)){
            var l = 0, result = [];
            while (l<a.split('').length) {
              if (a.split('')[l] == inpt.value) {
                result.push(l);
              }
              l++;
            }
            var l = 0;
            while (l<result.length) {
              letters[result[l]].innerHTML = a.split('')[result[l]]; 
              l++;
            }
        }else {
            console.log('wrong')
        }
    }
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <title>Hangman</title>
        <link rel="stylesheet" href="style.css">
        <link rel="preconnect" href="https://fonts.gstatic.com">
        <link href="https://fonts.googleapis.com/css2?family=Yanone+Kaffeesatz:wght@500&display=swap" rel="stylesheet"> 
    </head>
    <body>
        <p class='letter'>Write the letter in here:</p>
        <p class='bad'> the wrong letters:</p>
        <p class='word'>the word:</p>
        <input type="text" class="input" id="input">
         <button class="sub" id='submit' onclick="submt(a,letter)">submit</button>
        <script src="script.js"></script>  
    </body>
    </html>
 类似资料:
  • 问题内容: 尝试更改列的数据类型并设置新的默认值时遇到以下错误: 错误1064(42000):您的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在第1行的’VARCHAR(255)NOT NULL SET DEFAULT’{}’‘附近使用正确的语法 问题答案: 同样的第二种可能性(感谢juergen_d):

  • 在尝试更改列的数据类型并设置新的默认值时,我遇到以下错误: 错误1064(42000):您的SQL语法中有错误;查看与您的MySQL server版本相对应的手册,以了解第1行“varchar(255)NOT NULL SET DEFAULT”{}“附近使用的正确语法

  • 问题内容: 我在阅读有关挥杆的书时编写了一个小程序,该程序在两个标签之间创建了一个JSplitPane。问题在于,几乎看不到JSplitPane(至少在我的操作系统- MAC OS Lion中),并且在其上设置某些属性(如前景色)似乎不起作用。 这是代码: 有什么方法可以改变它的颜色,使其真正脱颖而出吗?谢谢。 问题答案: 是默认设置,简单是透明的,您可以 更改为或可能更好 通过改变不透明度

  • 问题内容: 我用过,但它们不起作用,颜色就像橙色,无法更改。 问题答案: 我认为这些价值观适合您

  • 问题内容: 我创建了一个UIAlertController 但是之后,我想更改UIAlertController的高度吗?我怎样才能做到这一点? 问题答案: 我发现您可以在显示视图控制器之前添加约束

  • 问题内容: 我可以改变颜色吗?标准颜色是蓝色。而且它与标准iOS应用程序非常接近。是否可定制?我该如何改变颜色?例如按钮颜色。 谢谢! 问题答案: 您可以只更改基础视图的,但是由于iOS 9(https://openradar.appspot.com/22209332)中引入的一个已知错误,因此tintColor被应用程序窗口的覆盖。 您可以: 在AppDelegate中更改应用程序。 } 在完成