2016-11-03 44 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

我注意的第二點是,在你的while循環,你正在做計數它也不會在你的代碼的任何地方定義+ = 1。

+0

謝謝,它的作品..:D –

1

我建議從某種類型的調試器開始,這樣你甚至可以找出你得到的錯誤。如果您使用Chrome,則可以使用F12打開他們的DevTools。 IE和Firefox都有自己的開發工具,我認爲他們都使用F12作爲他們的熱鍵。

下面就以指令的鏈接,Chrome DevTools

否則@ DavidR2016是對你的一些變量被在運行時交換不宣和反向功能。在粘貼問題時有點難以閱讀代碼,但是當我複製到NotePad ++時,我能夠更好地格式化和讀取它。你也不需要增加for循環中的i的數量。你可以只使用一個我,因爲它們的範圍是特定的循環,這也有助於可讀性。

+0

謝謝,它的工作原理。我改變了我的'我'。 –