Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/21: Рейтинг темы: голосов - 21, средняя оценка - 4.52
0 / 0 / 1
Регистрация: 21.05.2018
Сообщений: 8
1

Задача: нарисовать сетку таблицу20*20 в цикле

21.05.2018, 08:12. Показов 4129. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Я могу вставить свой код. Но он почему-то не работает. Рисует поле, а сетку не рисует. Задача полная такая: написать алгоритм передвижения квадратика сетки до заданного квадрата, клавишами вверх-вниз, влево-вправо. Кто может помочь найти и исправить ошибку? Заранее, большое спасибо! )))

Добавлено через 58 минут
кусок из JS
Javascript
1
2
3
4
5
6
7
8
9
function createMatrix()
{
    var n=20*20;
    for (var i=0; i<n; i++) 
     {
         var div = document.createElement('div');
         div.className='cell';
         matrix.appendChild(div);
     }
кусок из css:
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#matrix{
   width: 400px;
   height: 400px;
   border-top: 1px solid #999;
   border-left: 1px solid #999;
}
#matrix.cell{
    float: left;
    width: 19px;
    height: 19px;
    border-bottom: 1px solid #999;
    border-right: 1px solid #999;
    background: green;
}
Добавлено через 4 минуты
html:
HTML5
1
2
3
4
<body>
<div id="matrix" tabindex="0"> </div>
<script src="script.js">
</script>
Добавлено через 16 минут

Добавлено через 25 минут
Воспользовалась Вашим советом, сделала новый код
Javascript
1
2
3
4
5
6
7
8
9
10
for(i=0;i<20;i++)
    {
        var row=document.createElement("div");
        matrix.appendChild(row);
        for(j=0;j<20;j++)
         {
             var cell=document.createElement("div");
             row.appendChild(cell);
         }
     }
Результат тот же, рисует все равно поле вокруг, сверху и справа линии. А ячейки не рисует.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.05.2018, 08:12
Ответы с готовыми решениями:

Нарисовать сетку
В картинки видно что не так..но знаю что все таки объяснить придется. Делаю редактор для игры. У...

Нарисовать сетку
Как отрисовать сетку на picturebox-е из 10 на 20 квадратиков. 10 квадратиков вверх (-2,5mV до...

Нарисовать сетку
Нарисовать сетку, заполняющую прямоугольную область, центр которого совпадает с центром экрана....

Нарисовать сетку и круги
Здравствуйте. Заданы размеры сетки и есть виджет в окне. Как в Qt правильно нарисовать сетку из...

17
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
21.05.2018, 09:34 2
Цитата Сообщение от ninuska78 Посмотреть сообщение
Воспользовалась Вашим советом
это вы общаетесь с вашим "вторым я"?

и что ваше "второе я" разъяснило вашему "первому я" про атрибут tabindex для тега <div>?
зачем этот атрибут прописан в контейнере, который в принципе не способен получить фокус?
0
0 / 0 / 1
Регистрация: 21.05.2018
Сообщений: 8
21.05.2018, 10:28  [ТС] 3
Это мне ответили ссылкой на другие ветки форума, я ответила, а сообщение просто добавилось. Это настройки форума такие. tabindex убрала, все равно не работает.
0
супермизантроп
Эксперт JS
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,625
21.05.2018, 11:34 4
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
onload = function ()
{
var m = document.createElement ('div');
m.style.width = m.style.height = '400px';
m.style.borderTop = m.style.borderLeft = '1px solid silver';
m.id = 'matrix';
for (var j = 0; j < 400; j++)
   {
   var d = document.createElement ('div');
   d.style.float= 'left';
   d.style.width = d.style.height = '20px';
   d.style.borderRight = d.style.borderBottom = '1px solid silver';
   d.id = 'd' + j;
   m.appendChild (d);
   }
document.body.appendChild (m);
}
не забудьте в HTML-коде вслед за блоком <script></script> с кодом прописать ещё и <body></body>
ещё замечу, что никаких дополнительных CSS-правил для работы данного кода прописывать не нужно

ну а что дальше?
предложу очевидные варианты, а вы вы́берите и укажи́те нужный вам (или подробно опиши́те свой)

1. сразу после прорисовки таблицы какая-то случайная ячейка окрашивается в красный цвет и программа ждёт от пользователя
нажатий клавиш-стрелок, реагируя на них соответствующим перемещением красной ячейки по таблице вверх/вниз и вправо/влево

2. после прорисовки таблицы всплывает окошко, призывающее пользователя дважды кликнуть мышью по двум ячейкам таблицы, выбрав таким образом "старт" (ячейка окрасится в красный цвет) и "финиш" (в ячейке появится буква "F"), а далее всё как в п.1. плюс при достижении "финиша" вылетает окошко с поздравлением
0
0 / 0 / 1
Регистрация: 21.05.2018
Сообщений: 8
21.05.2018, 12:01  [ТС] 5
Спасибо, но результат тот же, не прорисовывается ничего (((
А вы можете сказать, что не так в моем коде, все таки он почти ничем не отличается от Вашего.
Но я вставила Ваш и все равно ничего не работает.

У меня первый вариант задачи.
0
634 / 476 / 170
Регистрация: 26.05.2016
Сообщений: 2,638
21.05.2018, 17:02 6
ninuska78, странно... Вот этот прорисовывает, только уменьшил кол-во до 20-ти:

CSS
1
.divCell{width:20px;height:20px;border: solid black 1px;}
HTML5
1
2
3
4
<meta http-equiv = "Content-Type" content = "text/html" charset = "utf-8">
<link rel = "stylesheet" type = "text/css" href = "54.css">
<html></html>
<script src = "54.js"></script>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
window.onload = createMatrix;
function createMatrix()
{
var matrix = document.body;
var n = 20;
for (i = 0; i < n; i++) 
{
var divMatrix = document.createElement('div');
divMatrix.className = 'divCell';
matrix.appendChild(divMatrix);
}
}
Миниатюры
Задача: нарисовать сетку таблицу20*20 в цикле  
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
21.05.2018, 17:22 7
atanov, лень было продумывать код и косметику наводить, если с коленки ninuska78 хочет что-то вроде этого - https://codepen.io/qwerty_wasd/pen/GdzXgd
Цитата Сообщение от ninuska78 Посмотреть сообщение
написать алгоритм передвижения квадратика сетки до заданного квадрата, клавишами вверх-вниз, влево-вправо.
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
let table=document.createElement("div"),row=column=0;
table.style.cssText="display:table; \ width:100%; \ border-collapse:collapse; \ box-sizing: border-box";
document.body.appendChild(table);
for(let i=0;i<20;i++){let row=document.createElement("div");row.style.cssText="display:table-row; \ width:100%;";table.appendChild(row);for(let j=0;j<20;j++){let cell=document.createElement("div");cell.style.cssText="display:table-cell; \ height:20px; \ border:2px solid red;";row.appendChild(cell)}}
table.children[row].children[column].style.backgroundColor="red";
document.addEventListener('keydown',function(e){
  if (e.keyCode==40 && row<19 && row>=0){
    table.children[row].children[column].style.backgroundColor="";
    //console.log(`deleted row=${row}`);
    row++;
    //console.log(row);
    table.children[row].children[column].style.backgroundColor="red";
    //console.log(`red row=${row}`);    
  }
  if(e.keyCode==38 && row<=19 &&row >0){    
    table.children[row].children[column].style.backgroundColor="";
    row--;
    table.children[row].children[column].style.backgroundColor="red";
  }
  if(e.keyCode==39 && column<19 && column>=0){
    table.children[row].children[column].style.backgroundColor="";
    column++;
    table.children[row].children[column].style.backgroundColor="red";
  }
  if(e.keyCode==37 && column<=19 && column>0){
    table.children[row].children[column].style.backgroundColor="";
    column--;
    table.children[row].children[column].style.backgroundColor="red";
  }
})
0
634 / 476 / 170
Регистрация: 26.05.2016
Сообщений: 2,638
21.05.2018, 17:23 8
Qwerty_Wasd, честно говоря я не понял, что хочет ТС
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
21.05.2018, 17:24 9
atanov, Пройдите в песочницу - там примерно то.
0
0 / 0 / 1
Регистрация: 21.05.2018
Сообщений: 8
22.05.2018, 07:49  [ТС] 10
Вот такой у меня результат во всех случаях.
Миниатюры
Задача: нарисовать сетку таблицу20*20 в цикле  
0
634 / 476 / 170
Регистрация: 26.05.2016
Сообщений: 2,638
22.05.2018, 08:19 11
ninuska78, посмотрите/покажите консоль.
0
0 / 0 / 1
Регистрация: 21.05.2018
Сообщений: 8
22.05.2018, 09:40  [ТС] 12
в том то и дело, консоль не выдает ошибки...
там пусто
Миниатюры
Задача: нарисовать сетку таблицу20*20 в цикле  
0
634 / 476 / 170
Регистрация: 26.05.2016
Сообщений: 2,638
22.05.2018, 09:45 13
ninuska78, а чем Вы запускаете файл/какой веб-сервер используете. Мой вариант Вы пробовали? Сделайте три файла, как в моём сообщении Вчера, 17:02. И откройте домен с /имя.html, а 54.css и 54.js положите там же, где и html.
0
0 / 0 / 1
Регистрация: 21.05.2018
Сообщений: 8
22.05.2018, 10:03  [ТС] 14
Ваш работает, спасибо!
Я запускаю Google Chrome.

Добавлено через 5 минут
а как теперь из этого сделать сетку?
0
634 / 476 / 170
Регистрация: 26.05.2016
Сообщений: 2,638
22.05.2018, 10:07 15
Цитата Сообщение от ninuska78 Посмотреть сообщение
Ваш работает, спасибо!
Я запускаю Google Chrome.
Добавлено через 5 минут
а как теперь из этого сделать сетку?
Погодите, так Вы не используете веб-сервер, просто локально open в браузере? Я Вас разочарую - так Вы ничего током не сможете кодить. Установите, например openserver, для начала.
0
0 / 0 / 1
Регистрация: 21.05.2018
Сообщений: 8
22.05.2018, 10:11  [ТС] 16
Хорошо, спасибо!
0
dev - investigator
Эксперт JSЭксперт HTML/CSS
2151 / 1496 / 651
Регистрация: 16.04.2016
Сообщений: 3,696
22.05.2018, 13:04 17
ninuska78,
Цитата Сообщение от ninuska78 Посмотреть сообщение
Вот такой у меня результат во всех случаях.
сохранить в utf-8 не забудьте
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
</head>
<body>
<script type="text/javascript">
  let table=document.createElement("div"),row=column=0;
table.style.cssText="display:table; \ width:100%; \ border-collapse:collapse; \ box-sizing: border-box";
document.body.appendChild(table);
for(let i=0;i<20;i++){let row=document.createElement("div");row.style.cssText="display:table-row; \ width:100%;";table.appendChild(row);for(let j=0;j<20;j++){let cell=document.createElement("div");cell.style.cssText="display:table-cell; \ height:20px; \ border:2px solid red;";row.appendChild(cell)}}
table.children[row].children[column].style.backgroundColor="red";
document.addEventListener('keydown',function(e){
  if (e.keyCode==40 && row<19 && row>=0){
    table.children[row].children[column].style.backgroundColor="";
    //console.log(`deleted row=${row}`);
    row++;
    //console.log(row);
    table.children[row].children[column].style.backgroundColor="red";
    //console.log(`red row=${row}`);
  }
  if(e.keyCode==38 && row<=19 &&row >0){
    table.children[row].children[column].style.backgroundColor="";
    row--;
    table.children[row].children[column].style.backgroundColor="red";
  }
  if(e.keyCode==39 && column<19 && column>=0){
    table.children[row].children[column].style.backgroundColor="";
    column++;
    table.children[row].children[column].style.backgroundColor="red";
  }
  if(e.keyCode==37 && column<=19 && column>0){
    table.children[row].children[column].style.backgroundColor="";
    column--;
    table.children[row].children[column].style.backgroundColor="red";
  }
})
</script>
</body>
</html>
А у меня вот такой результат.

atanov, и это без локалки, без нет-серва. Просто в клиенте открыть и все. Локалка по большей части нужна лишь для пыхи. Но в одном Вы правы. Про аякс, общение с БД и т.д. можно забыть без серва. Но простые то примеры - зачем?
Миниатюры
Задача: нарисовать сетку таблицу20*20 в цикле  
0
634 / 476 / 170
Регистрация: 26.05.2016
Сообщений: 2,638
22.05.2018, 13:19 18
Цитата Сообщение от Qwerty_Wasd Посмотреть сообщение
Но простые то примеры - зачем?
Я с Вами полностью согласен.
0
22.05.2018, 13:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.05.2018, 13:19
Помогаю со студенческими работами здесь

Нарисовать сетку из квадратиков
Здравствуйте! Очередной этап задачи - нарисовать игровое поле из квадратиков. Нужно пройти по...

Нарисовать сетку в консоли
здравствуйте, есть, предположим, один элемент сетки: string elem = {{&quot;__&quot;,&quot;__&quot;,&quot;__&quot;,&quot;__&quot;}, {&quot;|...

Нарисовать сетку в picturebox
Подскажите пожалуйста, есть два picturebox. У первого размер 2000x2000 твипов, у второго...

Не получается нарисовать координатную сетку:(
Помогите пожалуйста нарисовать координатную сетку 25х25 тонкими линиями,а то хоть убейте не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru