Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 28.11.2018, 22:05
Интересующийся
Отправить личное сообщение для imhateb Посмотреть профиль Найти все сообщения от imhateb
 
Регистрация: 16.09.2013
Сообщений: 28

Таблица на 1,5 млн ячеек... как сделать?
Здравствуйте.

Помогите пожалуйста. Есть необходимость разместить на странице таблицу 1200х1200 ячеек. Естественно для её создания я использую скрипт. Вот он:

$(document).ready(function() {
    for(var r = 0; r < 1201; r++){		
      $('table#coords').append('<tr>');			
      for(var d = 0; d < 1200; d++){$('table#coords tr:nth-child('+r+')').append('<td></td>');}			
      $('table#coords').append('</tr>');	
    }
 })


На меньшем количестве ячеек скрипт работает нормально. Но когда ставлю нужные 1200х1200 браузер начинает задыхаться, даже на локалхосте. Предлагает несколько раз покинуть страницу. В итоге так ничего и не показывает.

Вопрос такой, может я прошу слишком многого? И браузеры просто не в силах справиться с такой задачей? Хотя вроде ж в 21м веке живём.

Или может я что-то не правильно делаю? Если у вас есть решение, буду очень признателен за помощь.

P.S. Браузеры пробовал разные (все популярные) - результат один и тот же (т.е. никакой).
Ответить с цитированием
  #2 (permalink)  
Старый 28.11.2018, 23:28
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		td{
			border: 1px solid red;
			width: 2px;
			height: 2px;
		}
	</style>
</head>
<body>
	<script>

	var table = document.createElement('table');
	str='';
	for(var i = 0; i<1200; i++) str+='<tr>'+('<td>'.repeat(1200));
	table.innerHTML = str;
	document.body.append(table);

	</script>
</body>
</html>

хром секунд 8-9 ff за 3 сек грузит, памяти метров 800 съедает

Последний раз редактировалось j0hnik, 28.11.2018 в 23:35.
Ответить с цитированием
  #3 (permalink)  
Старый 28.11.2018, 23:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

imhateb,
у таких таблиц обычно отображают видимую часть,и попробуйте сначала создать, а потом выводить (append текст таблицы только 1 раз).
и 5 строка не нужна!
Ответить с цитированием
  #4 (permalink)  
Старый 29.11.2018, 00:02
Интересующийся
Отправить личное сообщение для imhateb Посмотреть профиль Найти все сообщения от imhateb
 
Регистрация: 16.09.2013
Сообщений: 28

Сообщение от рони Посмотреть сообщение
imhateb,
у таких таблиц обычно отображают видимую часть,и попробуйте сначала создать, а потом выводить (append текст таблицы только 1 раз).
и 5 строка не нужна!
Простите, Рони, а можно поподробнее?

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



Помимо прочего я хотел бы чтобы при наведении/клике можно было выводить координаты соответствующей ячейки. Стало быть для этого в код создания таблицы надо добавить момент с вставкой этих координат в ячейки... Но код предложенный профессором J0hnik мне не совсем понятен, и боюсь, я не смогу его допилить самостоятельно.((((

Последний раз редактировалось imhateb, 29.11.2018 в 00:04.
Ответить с цитированием
  #5 (permalink)  
Старый 29.11.2018, 00:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

imhateb,
слайдер 9 кадров, три на три, вы видите только центральный, идём влево, справа удаляем три блока, слева рисуем три блока, вот и весь алгоритм.
Ответить с цитированием
  #6 (permalink)  
Старый 29.11.2018, 00:38
Интересующийся
Отправить личное сообщение для imhateb Посмотреть профиль Найти все сообщения от imhateb
 
Регистрация: 16.09.2013
Сообщений: 28

Рони, я обещаю, что я попытаюсь в этом разобраться. Всё-таки азарт присутствует. Я уже сутки не спал и не ел. Хочется победить эту задачу и со спокойной совестью идти отдыхать. Так что я буду дальше ковыряться.

Но блин, если я всё-таки не смогу, могу ли я рассчитывать на то, что Вы поможете? Вы уже не раз меня выручали
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать проверку на display: block; ufaclub jQuery 3 22.12.2013 19:21
Как сделать калькулятор и с чего начать? A.P. Yellowman Общие вопросы Javascript 3 15.11.2013 21:32
Как убрать hover? Либо как сделать стрелки статичными? krusty36 Элементы интерфейса 1 13.07.2011 09:20
Как сделать, чтобы при наведении на кнопку справа от нее появлялись текстовые ссылки? Tass Общие вопросы Javascript 7 17.02.2011 09:06
Как сделать? При выходе мышкой за пределы окна браузера, начинает грузится другая стр alb Events/DOM/Window 13 01.09.2010 12:19