2017-09-28 9 views
0

私は非常にjavascriptに新しいので、この質問はダムかもしれないので。 私がしようとしていることは基本的には、たとえばa〜zのようなアルファベットの配列を持つことです。 1-10の乱数が生成され、関数に返される文字の数を決定する変数に保存されます。その後、変数は配列からランダムな要素を取り出してhtmlに戻す別の関数に渡されます。それは配列からのランダムな文字のランダムな量は1つの要素を返すだけです

すべてが正常に動作しますが、それは代わりに、変数「letternum」私はこれまで

でよ

相続に基づく量の時間に戻って唯一の皮膚を与えるごめんなさい説明するのは難しいです

var letters = [ 
    "a","b","c","d","e","f","g","h","i", 
    "j","k","l","m","n","o","p","q","r", 
    "s","t","u","v","w","x","y","z", 
]; 

function letters() { 
    var letternum = Math.floor(Math.random() * 10) + 1; 
    var i; 

    for (i = 1; i < letternum; i++) { 
    var random = Math.floor(Math.random() * letters.length) + 1; 
    var randletter = letters[random]; 
    document.getElelemtById('div').innerHTML = "Random letters picked:" + randletter; 
    } 
} 

私は私がより良い1

+0

こんにちは、スタックオーバーフローを歓迎します。質問をして質問を更新する方法の詳細については、 の[ask]リンクを参照してください。 –

答えて

1

あなたはあなたのコードに多少の誤差があります:あなたはスペルミスgetElementById

  • を。
  • あなたは配列と関数の両方に名前をつけていますletters
  • 以前に書いた文字を上書きする場合は、=を使用してください。
  • undefined(インデックスが範囲外になるため)を避けるには、Math.random() * (letters.length - 1)を使用する必要があります。

var letters = [ 
 
    "a", "b", "c", "d", "e", "f", "g", "h", "i", 
 
    "j", "k", "l", "m", "n", "o", "p", "q", "r", 
 
    "s", "t", "u", "v", "w", "x", "y", "z", 
 
]; 
 

 
function lettersFunction() { // a different name 
 
    var letternum = Math.floor(Math.random() * 10) + 1; 
 
    var i; 
 
    for (i = 1; i < letternum; i++) { 
 
    var random = Math.floor(Math.random() * (letters.length - 1)) + 1; 
 
    var randletter = letters[random]; 
 
    document.getElementById('div').innerHTML += "Random letter picked: " + randletter + '<br>'; // += instead of =, and add a new line after each letter 
 
    } 
 
} 
 
lettersFunction(); // calling the function
<div id="div"></div>

+0

あなたはそれを楽しんでいるようです:) – bhansa

+1

@bhansa私が言うことができる、私はそれらに数学を持っている問題を解決するのが大好きです。 –

0
document.getElelemtById('div').innerHTML = "Random letters picked:" + randletter; 

ループの終わりにこのラインを見つけることができなかったタイトルのために謝罪んあなただけの最後に残っているので、innerHTMLプロパティを変更します乱数でこれを次のように変更することができます。

document.getElelemtById('div').innerHTML += "Random letters picked:" + randletter; 

これらを追加します。

0

あなたの表示機能はあなたのforループの内側にあります。つまり、選択した文字ごとに一度表示されます。何がやりたいことはループのために一緒に手紙を連結し、一度にそれらを表示することです:

var letters = [ 
    "a","b","c","d","e","f","g","h","i", 
    "j","k","l","m","n","o","p","q","r", 
    "s","t","u","v","w","x","y","z", 
]; 

function letters(){ 

    var letternum = Math.floor(Math.random() * 10) + 1; 
    var i; 
    var randletter; 
     for (i = 1; i < letternum; i++) { 
      var random = Math.floor(Math.random() * letters.length) + 1; 
      randletter += letters[random]; 
    } 
    document.getElelemtById('div').innerHTML = "Random letters picked:" + randletter; 

}

0

ちょうどそれを上書きしないinnerHTMLプロパティを更新します。タイプミスも取り除き、div以外のidをdiv以外に使用してください。

document.getElementById('numdiv').innerHTML += "Random letters picked:" + randletter; 

コード:

<div id="numdiv" onclick="randletters();">Click</div> 
 

 
<script> 
 
    var letters = [ 
 
    "a", "b", "c", "d", "e", "f", "g", "h", "i", 
 
    "j", "k", "l", "m", "n", "o", "p", "q", "r", 
 
    "s", "t", "u", "v", "w", "x", "y", "z", 
 
    ]; 
 

 
    function randletters() { 
 

 
    var letternum = Math.floor(Math.random() * 10) + 1; 
 
    var i; 
 
    for (i = 1; i < letternum; i++) { 
 
     var random = Math.floor(Math.random() * letters.length) + 1; 
 
     var randletter = letters[random]; 
 
     document.getElementById('numdiv').innerHTML += "Random letters picked:" + randletter + "<br>"; 
 
    } 
 
     document.getElementById('numdiv').innerHTML += "<br><hr>"; 
 
    
 
    } 
 
</script>

関連する問題