我如何使用JavaScript来改变html文本中单个字母的背景颜色

问题描述 投票:0回答:1

你好,我目前正在制作一款打字游戏。我有两个变量。第一个是用户需要输入的文本。第二个是用户当前必须输入的文本。我已经能够做到这一点,以便程序可以检测两个变量是否相等。而且当到目前为止的文本等于他们需要写的文本时。例如,如果您需要输入“test”,而您只输入了“te”,它仍然会被认为是正确的。因为到目前为止你还没有犯过任何错误。无论如何,我希望单个字母/字符在正确或不正确时突出显示。因为目前它只会突出显示整个单词。

HTML

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- The line below is for CSS -->
    <link rel="stylesheet" href="style.css">
</head>

<body>

    <div><span class="text-to-type">Just some sample text.</span></div>
    <textarea class="text-box" rows="8" cols="55" oninput="run()"></textarea>

    <!-- The line below is for JavaScript -->
    <script src="index.js"></script>

</body>

</html>

JavaScript

// Variables
let textBox = document.getElementsByClassName("text-box")[0];
let textShownInWebPage = document.getElementsByClassName("text-to-type")[0];
let typedValue;
let typedValueArray;
let displayText = "Just some sample text."
let characterArray = displayText.split("");
let i;

const run = () => {
    typedValue = textBox.value;
    
    let isCorrect = true;

    for (i = 0; i < typedValue.length; i++) {
        if (typedValue[i] !== displayText[i]) {
            isCorrect = false;
            break;
        }
    }

    if (isCorrect) {
        console.log("correct");
        textShownInWebPage.style.backgroundColor = "#f0290e";
    } else {
        console.log("incorrect");
        textShownInWebPage.style.backgroundColor = "#eb2323";
    }
};

我尝试过使用这行代码,但它只会创建错误消息,我不确定为什么。

textShownInWebPage[i].style.backgroundColor = "#eb2323";

javascript html background-color
1个回答
0
投票

您可以在代码中使用

oninput
。 你可以像这样在oninput中调用你的匹配函数
<input type="text" oninput="myFunction()">

© www.soinside.com 2019 - 2024. All rights reserved.