2016-11-03 22 views
0

JavaScriptを初めて使用しています。なぜ私のコードがうまくいかないのかわかりません。私はカードスタックの数量を返す関数を作成しています。ユーザーはカードスタックの数量を入力します。それから、カードスタックは以下の規則に従ってリミックスされます。しかし、その結果は現れません。このコードのデバッグをお手伝いできますか?カードスタック機能が動作しません

<!DOCTYPE html> 
<html> 
<body> 

<h1>JavaScript Functions</h1> 

<p id="demo"></p> 

<script> 
var reposition = []; 
function Reverse(userinput){ 
var array = new Array(userinput); 
var trueform = new Array(userinput); 

for(var i=0; i<userinput; i++){ 
    array[i] = i + 1; 
    trueform[i] = i + 1; 
} 

while(! (isEqual(trueform,reposition))){ 
for(var ii=0; ii<userinput; ii++){ 
    reposition[userinput-ii-1] = array[ii]; 
    if((ii+1) != userinput){ 
    swap((ii+1)); 
    } 
} 
for(var iii=0; iii<reposition.length; iii++){ 
    array[iii] = reposition[iii]; 
} 
count +=1; 
} 
return count; 
} 

function swap(n){ 
var temp = array[n]; 
for(var iiii=n; iiii<array.length-1; iiii++){ 
    array[iiii] = array[iiii+1]; 
} 
array[array.length-1]= temp; 
} 

function isEqual(t, r){ 
    for(var iiiii=0; iiiii<t.length; iiiii++){ 
    if(t[iiiii] != r[iiiii]){ 
    return false; 
    } 
    } 
    return true; 
} 
document.getElementById("demo").innerHTML = Reverse(4); 
</script> 

</body> 
</html> 

答えて

1

最初に気づくのは、可変配列が定義されていないことです。これは、別の機能で使用しようとしているためです。

this.array instead of var array

私が気づく2つ目は、あなたのwhileループであなたもどこでも、あなたのコード内で定義されていない数+ = 1をやっているということです。

+0

ありがとう、それは働く..:D –

1

何らかの種類のデバッガから始めることをお勧めします。どのようなエラーが発生しているかを知ることさえできます。 Chromeを使用している場合は、F12でDevToolsを開くことができます。 IEとFirefoxはどちらも独自の開発ツールを持っており、どちらもF12をホットキーとして使用していると思います。ここで

はDavidR2016スワップで、実行時に宣言されていないと機能を逆にしているあなたの変数のいくつかについての権利であるそれ以外の場合は、@Chrome DevTools

ための手順へのリンクです。質問に貼り付けられたコードを読むのはちょっと難しいですが、私がNotePad ++にコピーしたとき、私は少しフォーマットして読みやすくなりました。また、forループ内のiの数を増やす必要はありません。特定のループにスコープが設定されているため、1つしか使用できません。これは読みやすさにも役立ちます。

+0

ありがとう、それは動作します。私は私の '私'を変更しています。 –

関連する問題