2016-08-06 7 views
1

localstorageから取得した名前の配列からランダムな名前ピッカーを作成しようとしていますが、Google Chromeで検査するとエラーがポップアップしないようです。localstorageから配列へランダム名ピッカー

ここに私のコードです:

function getUserData() { 
    var Detail = localStorage.getItem("Detail"); 

    if (Detail == null) { 
     Detail = []; // on new computer, create the local storage item } else { 
     Detail = JSON.parse(Detail); // convert from string to array 
    } 

    for (var i = 0; i < Detail.length; i++) { // loop through the array 
     var row = document.getElementById("Detail").insertRow(-1); 
     var cell1 = row.insertCell(0); 
     var cell2 = row.insertCell(1); 
     var cell3 = row.insertCell(2); 
     var cell4 = row.insertCell(3); 
     var cell5 = row.insertCell(4); 
     cell1.innerHTML = Detail[i].name; 
     cell2.innerHTML = Detail[i].admin; 
     cell3.innerHTML = Detail[i].email; 
     cell4.innerHTML = Detail[i].contact; 
     cell5.innerHTML = Detail[i].country; 
    } 
} 

function NamePicker() { 
    var Detail = localStorage.getItem("Detail"); 

    if (Detail == null) { 
     Detail = []; // on new computer, create the local storage item 
    } else { 
     Detail = JSON.parse(Detail); // convert from string to array 
    } 

    // copy names 
    var nameArray = []; 

    for (var i = 0; i < Detail.length; i++) { // loop through the array 
     nameArray[i] = Detail[i].name; 
    } 

    for (var i = 0; i < Detail.length; i++) { // loop through the array 
     // get a number from random num generator %numArray.length 
     name = nameArray[num]; 

     while (nameArray.length < 11) { 
      var randomnumber = Math.max(Math.ceil(Math.random() * 11)) 
      var found = false; 
      for (var i = 0; i < nameArray.length; i++) { 
       if (name[i] == randomnumber) { 
        found = true; 
        break 
       } 
      } 
      if (!found) name[nameArray.length] = randomnumber; 
     } 

     // Display using modal 
     alert(name); 

     // remove using splice(num, 1); 
     name.splice(num, 1); 
     document.getElementById("Detail").innerHTML = name; 
    } 
} 

問題は、numは、リストから名前を削除されていないと、アラート機能がポップアップされていないようだということです... 私は本当に助けに感謝感謝事前に...

+0

最初の関数のコメント中の 'else {'は質問の入力ミスですか? 'Detail = []; // ...} else {' – Andreas

+0

2番目のforループで名前配列をループしているので、Detail.lengthではなくnameArray.lengthを使用します。 –

+0

numは正確にどこから来たのですか? –

答えて

1

私はあなたの2番目の機能の問題を発見した; 3つのforループでローカル変数iを使用しています。そのうちの1つで、numを使用することを意味します。また、nameArrayを実行しているので、Detail.lengthをnameArray.lengthに変更しました。私はループの3番目をiの代わりにzを使うように変更します。

function NamePicker() { 
var Detail = localStorage.getItem("Detail"); 

if (Detail == null) { 
    Detail = []; // on new computer, create the local storage item 
} else { 
    Detail = JSON.parse(Detail); // convert from string to array 
} 

// copy names 
var nameArray = []; 

for (var i = 0; i < Detail.length; i++) { // loop through the array 
    nameArray[i] = Detail[i].name; 
} 

for (var num = 0; num < nameArray.length; num++) { // loop through the array 
    // get a number from random num generator %numArray.length 
    name = nameArray[num]; 

    while (nameArray.length < 11) { 
     var randomnumber = Math.max(Math.ceil(Math.random() * 11)) 
     var found = false; 
     for (var z = 0; z < nameArray.length; z++) { 
      if (name[z] == randomnumber) { 
       found = true; 
       break 
      } 
     } 
     if (!found) name[nameArray.length] = randomnumber; 
    } 

    // Display using modal 
    alert(name); 

    // remove using splice(num, 1); 
    name.splice(num, 1); 
    document.getElementById("Detail").innerHTML = name; 
} 
} 

+0

私があなたに与えたコードを試しました。 Google Chromeの要素を調べるとエラーは発生しませんでした。 しかし、私のWebページは、私が関数を使用して応答しなかった... –

+0

私はwhileループにも問題があるかもしれないと思う。あなたが与えた条件が成立していることを確認してください。それ以外の場合は無限ループです。今はnameArray.length <11をチェックしていますが、何も追加していないので、この条件が満たされているかどうかは疑問です。または、name.length <11 –

+0

nameArray.lengthの値を持っています詳細値 それはまた無限ループになるので、私は間違いなくname.lengthを使用していません –

関連する問題