【问题标题】:Scrambling a word into random letters将单词打乱成随机字母
【发布时间】:2017-07-10 06:01:53
【问题描述】:

该程序应该将您输入的单词放入一个盒子中,将其拆分为一组字母并将它们随机排列。之后,它将第一个字母大写,其余字母小写,并将其输出到同一个框中。

我正在尝试将一个单词打乱成随机字母,但我无法克服这个错误。

在 chrome 中它说我有一个意外的标识符,在 mozilla 中它说我缺少一个用于 newWord = shuffle(newWord); 的括号*固定

编辑:现在我有一个错误说大写不是一个函数。

<html>

<head>
<title>Final</title>
</head>

<body>
<h1>Final</h1> Random Word scrambler
<br>
<input type="text" id="word">
<input type="button" id="submit" value="Randomize" onclick="Random()">
<script language="javascript">
    word = document.getElementById("word").value
    var n = word.length;

    function Random() {
            for (var start = 0; start < n; start++) {
                var newWord = word.charAT(start)

                    newWord = shuffle(newWord);

                    function shuffle(array) {
                        var currentIndex = array.length,
                            temporaryValue, randomIndex;

                        while (0 !== currentIndex) {

                            randomIndex = Math.floor(Math.random() * currentIndex);
                            currentIndex -= 1;

                            temporaryValue = array[currentIndex];
                            array[currentIndex] = array[randomIndex];
                            array[randomIndex] = temporaryValue;
                        }
                        return array;
                    }

                    function capitalize(str) {
                        return str.replace(/\w\S*/g, function(txt) {
                            return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
                        });
                   Array.join(newWord);
                    }
                }
                if (newWord == newWord){

                  document.getElementById("word").value = (capitalize(newWord));
                }
            }

    </script>
</body>

</html>

【问题讨论】:

  • 您收到此行的错误 b/c:var newWord = (word.charAT(start),您需要先删除 (
  • 而且,charAT 应该是 charAt

标签: javascript html arrays string


【解决方案1】:

这一行:

var newWord = (word.charAT(start)

应该是:

var newWord = word.charAt(start)

而且,这是您尝试做的更简化的版本:

// Get a reference to the DOM element, not a property of the element
// that way you can access another property later without having
// to re-scan the DOM for the element again
var txtWord = document.getElementById("word");
var btn = document.getElementById("submit");

// Set up your events using DOM standards and not inline HTML event attributes
btn.addEventListener("click", random);

// By convention, use camelCase for naming
function random() {

  // Separate all the letters into an array
  var letterArray = txtWord.value.split("");
  
  // create an new array from scrambled letters in the original array
  var scrambledArray = [];
  
  var len = letterArray.length;
  for (var start = 0; start < len; start++) {
    // Get a random number between 0 and the highest array index and put it in the new array
    var num = Math.floor(Math.random() * letterArray.length)
    scrambledArray.push(letterArray[num]);
    
    // Remove letter from original array
    letterArray.splice(num,1);
  }
  console.log(scrambledArray.join(""));
}
<h1>Final</h1> Random Word scrambler
<br>
<input type="text" id="word">
<input type="button" id="submit" value="Randomize">

【讨论】:

  • 哈哈,但问题是我不知道骆驼帽或 dom 元素是什么
  • @VisilyRomani "Camel Case" 是您将第一个单词以小写字母书写,所有后续单词首字母大写,如:camelCase。看看我是怎么写scrambledArrayletterArraylen的?
  • @VisilyRomani DOM(文档对象模型)元素是映射到特定 HTML 元素的 JavaScript 对象。您的 &lt;input type=text&gt; 和您的 &lt;input type=button&gt; 是 DOM 元素,我们需要在 JavaScript 中访问它们。
  • 哦,感谢您的澄清。我不知道输入被称为 DOM。感谢所有的帮助。 :)
  • @VisilyRomani 所有的 HTML 元素(不仅仅是 &lt;input&gt; 元素)都是文档对象模型的一部分。它们都是 DOM 对象。
猜你喜欢
  • 1970-01-01
  • 2014-08-22
  • 1970-01-01
  • 2012-01-27
  • 2019-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多