Jump to content

Решение JS-задачи про таблицу


s0rr0w
 Share

Recommended Posts

чем тебе не нравится конструктор?

Что будешь делать с несколькими таблицами и синглтоном, причем юзать не один метод getCell, а несколько разных методов?

Мне не конструктор не нравится, а преждевременное усложнение кода, особено в теле конструктора. У тебя только половина кода выполняет полезные действия, остальная - обслуживающая. Я не говорю, что это плохо, но это может стать причиной чрезмерного усложнения в будущем.

Синглтон будет содержать только методы работы, но не данные. Данные пусть таблица и содержит, они ведь к ней относятся.

Тоесть ты будешь постоянно создавать этот массив ячеек? Если надо будет найти 10 ячеек, то все 10 раз будешь строить массив?

Как-то это будет напряжно для браузера.

Link to comment
Share on other sites

Тоесть ты будешь постоянно создавать этот массив ячеек? Если надо будет найти 10 ячеек, то все 10 раз будешь строить массив?

Как-то это будет напряжно для браузера.

Не, я его создам один раз, но хранить буду в теге <table>

Ты хранишь ссылку на ноду таблицы (this.table) и сам массив (this.tableGrid) в инстансе TableGrid. А я бы хранил это так:

table.tableGrid = []

Потому что любой другой скрипт, который захочет изменять структуру таблицы, должен будет рапортовать TableGrid'у о своих изменениях. Но как он это сделает, если таблица никак не связана с нужным instance'ом? Значит придется городить огород из менеджеров, которые бы связывали несколько модулей воедино. Короче, все строго по моей последней презентации.

Свое решение я выложу завтра. Если у кого есть желание показать свои работы, то выкладывайте.

  • Like 1
Link to comment
Share on other sites

Просто это реально удобнее. Так как мы в любой части кода всегда можем добраться до этого массива если он есть.

А так как делал я -- глобальная переменная не очень хорошо, но и если локальная будет, то трудности с доступом будут.

Link to comment
Share on other sites

Просто это реально удобнее. Так как мы в любой части кода всегда можем добраться до этого массива если он есть.

А так как делал я -- глобальная переменная не очень хорошо, но и если локальная будет, то трудности с доступом будут.

Есть еще один из вариантов организации кода.

http://jsfiddle.net/JUF9y/

Link to comment
Share on other sites

У меня оно не работает почему-то.

http://jsfiddle.net/4whnq/3/ - исправил.

У тебя только половина кода выполняет полезные действия, остальная - обслуживающая.

Я сомневаюсь, что там можно хоть что-то упростить: каждая строчка либо важная проверка, либо генерация объекта.

--

ну я вобщем и не спорю, что-то намудрил...

Link to comment
Share on other sites

ну я вобщем и не спорю, что-то намудрил...

Не, твой подход тоже неплох, развернуть двумерный массив в одномерный - это неплохая стратегия.

Читабельность страдает, но в целом - неплохо.

Link to comment
Share on other sites

А какой смысл такого решения читерства?

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

Хорошее решение, только, почему-то, не рабочее.

Смотрю в хроме и в ФФ 16. Бяка якась.

Оно рабочее, только он "мир прогнул под себя", оно работает правильно только когда таблица в таком бяконом виде

Хотя в условии не было, что это должно быть прям практическое решение xD

Link to comment
Share on other sites

И как это применить на практике?

Походу дела, нужно просто сначала приводить таблицу к такому виду или даже лучше её кланировать, вычислять ячейку и удалять клон из ДОМ-а)

Link to comment
Share on other sites

Хорошее решение, только, почему-то, не рабочее.

Смотрю в хроме и в ФФ 16. Бяка якась.

А что ты ожидаешь увидеть? :)

Сорыч, меня больше паразило точность выстрела. Чё, если таблицу к такому виду приводить, то несмотря на rowspan и т.д, выстрел будет точный, да?

Link to comment
Share on other sites

Походу дела, нужно просто сначала приводить таблицу к такому виду или даже лучше её кланировать, вычислять ячейку и удалять клон из ДОМ-а)

А я не тоже самое сказал? :D

У меня крутилась мысль об elementFromPoint когда уперся в rowspan, но я не догадался привести таблицу к такому виду, я оказался зашорен тем, что таблица должна остаться читабельной

Link to comment
Share on other sites

Походу дела, нужно просто сначала приводить таблицу к такому виду или даже лучше её кланировать, вычислять ячейку и удалять клон из ДОМ-а)

А я не тоже самое сказал? :D

А я не прочитал твой пост, прикинь))) Точнее прочитал, но быстро, наискосок :D

Link to comment
Share on other sites

А что ты ожидаешь увидеть?

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

Да а смысл? Решение и так понятно, по сути. Точнее ща Сорыч ответит и будет понятно точно... мне))

Link to comment
Share on other sites

А какой смысл такого решения читерства?

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

;)

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

А задание звучало как?

Есть таблица, в которой есть ячейки с colspan или rowspan.

Ни слова про читабельность или наличие контента :rolleyes:

  • Like 2
Link to comment
Share on other sites

А какой смысл такого решения читерства?

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

;)

Имхо,не согласен немного тут. Здесь дело не в костности, а в том, что ты просто знал этот трюк с пустой таблицей, а на этом уже можно было придумать свой примитивный алгоритм :rolleyes:

Link to comment
Share on other sites

Имхо,не согласен немного тут. Здесь дело не в костности, а в том, что ты просто знал этот трюк с пустой таблицей, а на этом уже можно было придумать свой примитивный алгоритм :rolleyes:

Первое мое решение было более "сложным". Я сначала пытался использовать трюк с генерацией события клика мыши в какие-то координаты. Но, в отличие от реальных кликов пользователя, искусственные не работают так, как мне хотелось. И тут всплыла информация, что есть такой замечательный метод, как elementFromPoint. Код стал еще проще.

Сорыч, меня больше паразило точность выстрела. Чё, если таблицу к такому виду приводить, то несмотря на rowspan и т.д, выстрел будет точный, да?

С математикой трудно спорить :)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share


×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy