格式化用户输入以匹配存储的值

时间:2014-02-25 21:16:08

标签: javascript

我正在使用H3元素来初始化游戏

<h3 id="startGame">Start</h3>

以下是我写过的JavaScript

在函数formatText()中,我取用户输入的内容并将整个字符串设置为小写。然后我将单词的第一个字母大写,以便它匹配字符串在数组中的写入方式。在实际上有两个单词的情况下,我然后抓住第二个单词的第一个字母并将其大写以匹配两个单词字符串在数组中的写入方式。

最后,当用户输入我要求他们输入的内容时,无论他们如何编写它(无论大小写)。所有重要的是他们拼写正确。

然而,我的问题是它适用于一个单词字符串但不会按照我的意图大写第二个单词。意思是我可以以任何我希望的方式输入单词字符串(当然拼写正确)并且它将解决纠正。我甚至可以输入两个单词串并混淆第一个单词的大小写,它将解决纠正。但是,当我没有将第二个词大写时,它总是解析为不正确。

我为解决此问题而编写的代码似乎不起作用,我不知道为什么。

    var nutrients = [
    "Vitamin B6",
    "Manganese",
    "Vitamin C",
    "Fiber",
    "Potassium",
    "Biotin",
    "Copper"

];

function memoNutri() {

    var pleaseCopy;
    var spaceMarker = " ";
    var capitalizeSecondWord;
    var firstWord;
    var secondWord;
    var twoWords;

    function ask() {
        pleaseCopy = prompt("Enter the following into the text field: " + nutrients[i] + ".");
    }

    function formatText() {
        pleaseCopy.toLowerCase();

        pleaseCopy = pleaseCopy[0].toUpperCase() + pleaseCopy.substring(1, pleaseCopy.length);

        capitalizeSecondWord = pleaseCopy.substring(spaceMarker + 1, spaceMarker + 2).toUpperCase();

        firstWord = pleaseCopy.substring(0, spaceMarker);

        secondWord = capitalizeSecondWord + pleaseCopy.substring(spaceMarker + 2, pleaseCopy.length);

        twoWords = firstWord + spaceMarker + secondWord;
    }

    for (i = 0; i < nutrients.length; i++) {

        ask();

        formatText();

        if (pleaseCopy === nutrients[i] || twoWords === nutrients[i]) {
            alert("You are correct! " + nutrients[i]);
        } else {
            alert("That is incorrect");

        }
    }



    }

    var startGame = document.getElementById('startGame');
    startGame.onclick = memoNutri;

1 个答案:

答案 0 :(得分:1)

尝试使用:

var textArr = pleaseCopy.split(" ");

for (var i = 0; i < textArr.length; i++) {
    textArr[i] = textArr[i][0].toUpperCase() + textArr[i].substring(1).toLowerCase();
}

var twoWords = textArr.join(" ");

将内容拆分为数组。格式化每个索引处的文本,然后重新加入文本。