2013-02-18 64 views
1

試圖創建一個文字擾頻器,它從文本框中獲取文本,對這些字母進行加擾,然後在不同的文本框中重複它們。代碼必須使用循環來將文本分佈在字母數組中。一旦我到達Math.floor對象,我很困惑如何繼續。使用循環創建Word擾碼器

相關代碼:

<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> 
+3

如果你想要做的是隨機化字符數組,請參閱[如何隨機化JavaScript數組?](http://stackoverflow.com/questions/2450954/how-to-randomize-a-javascript-數組)。此外,避免像「隨機」這樣的變量名稱,因爲這些名稱可能令人困惑,甚至是保留字。 – Boaz 2013-02-18 21:17:37

+1

這似乎是一個家庭作業問題。是這樣嗎? – 2013-02-18 21:19:28

+0

是的。這是我的高中計算機科學課。 – Kevin56689 2013-02-18 21:22:37

回答

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

該解決方案僅部分工作。如果我輸入一個單詞「happy」,則代碼只返回兩個字母而不是五個。 (pp,hp,ap等)我用我的文本框的值替換「hello」,最後我將輸出文本框的值與word相等。 – Kevin56689 2013-02-18 21:40:57

+0

我沒有得到你的錯誤。請參閱http://jsfiddle.net/ZbPLY/。 – 2013-02-18 21:43:31

+0

生成的單詞長度與我放入的長度不一樣。我將更新我的代碼,以便您可以看到我所做的。 – Kevin56689 2013-02-18 21:44:58

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; 
} 

警報字母(scrambleWord({值: '菠菜'}));