2015-12-28 3 views
1

Не могли бы вы рассказать мне, что я сделал здесь неправильно? Я пытаюсь использовать входные координаты для вывода в таблицу html, используя для циклов.Для цикла для HTML-таблицы

for(i=1; i<10; i++);{ 
    i = x; 
    document.writeln(mytable + i) 
}  
    for(j=1; j<10; j++);{ 
    j = y; 
    document.writeln(mytable + j) 
    } 
     if(kingX == x || kingY == y){ 
     document.writeln('K'); 
     } 
      else if(queenX == x || queenY == y){ 
      document.writeln('Q'); 
      } 
       else(x || y <=10);{ 
       document.writeln(' '); 
       } 

mytable = mytable + "</tr></tbody></table>"; 
+1

Какое указание у вас есть, что есть проблема? Когда вы отлаживаете это, где конкретно это не удается? – David

+1

Вы описали, что вы ожидаете, этот код * должен * делать, но не описал, что он делает *. Как это не удается? Что касается отладки, посмотрите на инструменты отладки в вашем браузере. Вы можете установить «контрольные точки» в своем коде и пройти через него, по очереди, по мере его выполнения. Это позволяет вам просматривать значения времени выполнения переменных, видеть, как ведет себя логика и т. Д. – David

ответ

1

Итак, я переписал ваш код, чтобы вы могли видеть, как он должен выглядеть.

<script> 
var isInCheck = ''; 

var kingX = prompt('Enter X co-ordinate of King? ',''); 
var kingY = prompt('Enter Y co-ordinate of King? ',''); 
var queenX = prompt('Enter X co-ordinate of Queen? ',''); 
var queenY = prompt('Enter Y co-ordinate of Queen? ',''); 

document.write('<table>'); 

for (var x=0; x<10; x++) { 
    document.writeln('<tr>'); 
    for (var y=0; y<10; y++) { 
     // This is inside of a nested for-loop 
     document.writeln('<td>'); 
     if (kingX == x && kingY == y) { 
      document.writeln('K'); 
     } else if(queenX == x && queenY == y) { 
      document.writeln('Q'); 
     } else { 
      document.writeln(' '); 
     } 
     document.writeln('</td>'); 
    } 
    document.writeln('</tr>'); 
} 

document.write('</table>'); 
</script> 

В коде опубликованы 2 основных ошибки.

Первый, не делают это потому, что точка с запятой не будет выполнять код между фигурными скобками:

for(j=1; j<10; j++);{ 

Он должен выглядеть следующим образом (без запятой):

for(j=1; j<10; j++) { 

Возможно, это основной источник путаницы, который у вас может быть.

Во-вторых, вы хотите сделать это:

if (kingX == x && kingY == y) { 

Не так:

if (kingX == x || kingY == y) { 

Код, который вы написали, что говорит: если координата х равна kingX, OR координата у равна затем отобразите K. Вы хотите, чтобы оба условия были истинными, поэтому вам нужно и хотите использовать & &.

Кроме того, for-loops также могут быть вложенными, вы можете иметь цикл в другом цикле, который необходим для создания нужной структуры таблицы.

И, наконец, не всегда использовать document.write для вывода таблицы, но поскольку вы новичок, все в порядке. Обычно мы будем конкатенировать строку с переменной, а затем просто выводить эту переменную.

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