1

尝试创建一个单词加扰器,它从文本框中获取文本,对字母进行加扰,然后在不同的文本框中重复它们。代码必须使用循环将文本分布在字母数组中。一旦我到达 Math.floor 对象,我对如何继续感到困惑。

相关代码:

    <script type="text/javascript">

    var word = document.getElementById("input").value;
    var wordLength = word.length;
    var scrambled = "";

    for (var i = 0; i < wordlength; i++) {
        var charIndex = Math.floor(Math.random() * word.length);
        scrambled += word.charAt(charIndex);
        word = word.substr(0, charIndex) + word.substr(charIndex + 1);
    }

    document.getElementById("output").value = scrambled;

    }

    </script>

    <head>
    <body>
    <form>  
    <input type="text" name="input" id="input" value="" maxlength="10"> <input type="text" name="output" id="output" value="" disabled="true"><br/>
    <input type="button" name="generate" value="Generate" onClick="Scramble(this.form)">
    </form>
    </body>
    </html>
4

2 回答 2

0

一个简单的随机化单词的方法如下:

var word = "hello";
var wordLength = word.length;
var scrambled = "";

for (var i = 0; i < wordLength; i++) {
    var charIndex = Math.floor(Math.random() * word.length);
    scrambled += word.charAt(charIndex);
    word = word.substr(0, charIndex) + word.substr(charIndex + 1);
}

这样做是在每个循环中从单词中删除一个字母,并将其附加到一个字符串中,该字符串将成为您的随机单词。Math.random生成一个介于 0 和 1 之间的随机数,并将Math.floor结果向下舍入。因为单词中有六个字母开头,所以这会产生一个介于 0 和 5 之间的数字(这是您想要的,因为没有第六个索引)。

剩下要做的就是将结果弹出到一个文本框中。

于 2013-02-18T21:25:55.403 回答
0

这个循环测量缩小的原件,同时随机删除加扰的字母——

function scrambleWord(s){
    var word= s.value.split(''), scram= '';
    while(word.length){
        scram+= word.splice(Math.floor(Math.random()*word.length), 1)[0];
    }
    return scram;
}

alert(scrambleWord({value:'spinach'}));

于 2013-02-18T23:27:45.710 回答