2016-11-03 5 views
0

Я новичок в JavaScript. Я не знаю, почему мой код не работает. Я создаю функции для возврата количества стеков карт. Пользователь вводит количество стека карт. Затем стопки карточек будут заменены следующими правилами. Но результат не появляется. Не могли бы вы помочь отладить этот код.Card Stacks Функции не работают

<!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

Вторая вещь, которую я замечаю, что в цикле в то время как вы делаете подсчет + = 1, который также нигде не определено в коде.

+0

Спасибо, это работает ..: D –

1

Я рекомендую начать с отладчика, чтобы вы могли даже узнать, какие ошибки вы получаете. Если вы используете Chrome, вы можете открыть их DevTools с помощью F12. IE и Firefox имеют также собственные инструменты для разработчиков, и я думаю, что оба они также используют F12 как свою горячую клавишу.

Вот ссылка на инструкции по Chrome DevTools

В противном случае @ DavidR2016 прав о некоторых из ваших переменных время необъявленной во время выполнения в обмене и обратной функции. Немного трудно прочитать ваш код, поскольку он вставлен в вопрос, но когда я скопировал на NotePad ++, я смог отформатировать и прочитать его немного лучше. Вам также не нужно увеличивать число i в ваших циклах. Вы можете использовать только один i, потому что они привязаны к конкретному циклу, и это также поможет с удобочитаемостью.

+0

Спасибо, это работает. Я изменил свой «я». –

Смежные вопросы