#javascript #html #css
#javascript #HTML #css
Вопрос:
У меня есть веб-сайт, на котором должна быть бесконечная таблица (от-бесконечности до бесконечности в X и Y). Пользователь должен иметь возможность прокручивать в обе стороны и, если возможно, увеличивать и уменьшать масштаб (показывать больше строк и столбцов в окне просмотра того же размера). Мне нужно иметь обнаружение щелчков во всех ячейках, так что есть ли какой-нибудь способ создать подобную таблицу с кнопками в каждой ячейке, используя HMTL / CSS / JS?
Лучший пример, который я смог найти в Интернете, был https://shapez.io /, однако источник (https://github.com/tobspr/shapez.io ) довольно большой, и поиск всей камеры / рендеринга / движения кажется большой проблемой, которая может и не понадобиться.
Мой текущий код не работает (циклы никогда не заканчиваются)
function tableCreate() {
var body = document.getElementsByTagName('body')[0];
var tbl = document.createElement('table');
tbl.style.width = '100%';
tbl.setAttribute('border', '1');
var tbdy = document.createElement('tbody');
for (var i = -Infinity; i < Infinity; i ) {
var tr = document.createElement('tr');
for (var j = -Infinity; j < Infinity; j ) {
var td = document.createElement('td');
td.appendChild(document.createTextNode('u0020'))
i == 1 amp;amp; j == 1 ? td.setAttribute('rowSpan', '2') : null;
tr.appendChild(td)
}
tbdy.appendChild(tr);
}
tbl.appendChild(tbdy);
body.appendChild(tbl)
}
tableCreate();
Комментарии:
1. посмотрите на отложенную загрузку, в основном вы отображаете только то, что пользователь хочет видеть, поэтому сначала определенного размера, затем добавляете каждый раз, когда он прокручивает до конца таблицы любого размера, и загружаете только эту сторону. я не могу привести вам рабочий пример, потому что никогда не работал с отложенной загрузкой таким образом, но погуглите, и вы найдете какой-нибудь рабочий пример. и, конечно, ваш код будет выполнять бесконечный цикл, поскольку вам нужна бесконечная таблица
2. Да, это бесконечные циклы, все в порядке. Было бы полезно узнать больше о вашем приложении. Вы создаете игру? Должен ли мир быть с отслеживанием состояния, т. Е. Пользователь прокручивает в одном направлении миллион единиц, затем прокручивает назад, должны ли они видеть точно то же самое? Существует ли порог, при котором вы можете рандомизировать? Генерируется ли содержимое процедурно? Как / откуда поступают / отправляются данные (на сервер?)? Существует множество факторов, поэтому это кажется довольно открытым.
3. вы не можете перечислять бесконечный набор и не можете отображать бесконечно большую таблицу. Что вам нужно сделать, так это смоделировать бесконечно большую (или, возможно, «неограниченная» будет лучшим описанием, чем «бесконечная») таблицу, отображая только те части, которые актуальны в данный момент времени, как предлагает @chawkichalladia.