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

谢谢,它的工作原理。我改变了我的'我'。 –