Комментарии 98
У меня тоже была такая идея, но… не 30 строк кода. Это очень круто, спасибо.
0
Так как вычисление значений в ячейках происходит при помощи eval, можно использовать любые глобальные переменные и функции языка.
+3
Более того, можно в этом «экселе» испольнять JS код и например писать 3D игры… это вам не картины в MS office рисовать.
Ну а по теме кода — очень красиво и изящно, вроде все знакомые функции/методы, но я бы в 30 строк не уложился.
Ну а по теме кода — очень красиво и изящно, вроде все знакомые функции/методы, но я бы в 30 строк не уложился.
+13
Загрузчик файлов в 30 строк
jsfiddle.net/2HKCX/5/
jsfiddle.net/2HKCX/5/
0
Вводим в ячейку, например,
=alert('z')
— и с вкладки невозможно выйти, каждый onBlur будет сопровождаться алертом.+4
JS-ninja.
+3
Воистину, нет пределов совершенству.
0
НЛО прилетело и опубликовало эту надпись здесь
Автор топика-ссылки, поправьте автора оригинала — Ondřej.
+1
НЛО прилетело и опубликовало эту надпись здесь
Вы за что человека минусуете? Или действительно считаете, что код должен выглядеть именно так:
} else { return isNaN(parseFloat(value)) ? value : parseFloat(value); }
INPUTS.forEach(function(elm) { try { elm.value = DATA[elm.id]; } catch(e) {} });
+2
За то, что он зануда. Ну прогнал через beautifier, ну стало 40 строк. Велика разница.
Было бы ещё понятно, если бы на самом деле™ там было тридцать однострочных функций в тысячу знаков каждая.
Было бы ещё понятно, если бы на самом деле™ там было тридцать однострочных функций в тысячу знаков каждая.
+12
Занудство
Человек объективно опроверг факт, который стоит на первом месте в списке достоинств скрипта, и правильно сделал
+3
В том то и дело: зачем эта маленькая ложь? Если бы он написал «в 40 строк», никто бы меньше восхищаться не стал, но и не было бы этого неприятного разговора.
+2
Напомнило:
<insomnia> Нужно выполнить всего три команды, чтобы поставить Gentoo
<insomnia> cfdisk /dev/hda && mkfs.xfs /dev/hda1 && mount /dev/hda1 /mnt/gentoo/ && chroot /mnt/gentoo/ && env-update &&. /etc/profile && emerge sync && cd /usr/portage && scripts/bootsrap.sh && emerge system && emerge vim && vi /etc/fstab && emerge gentoo-dev-sources && cd /usr/src/linux && make menuconfig && make install modules_install && emerge gnome mozilla-firefox openoffice && emerge grub && cp /boot/grub/grub.conf.sample /boot/grub/grub.conf && vi /boot/grub/grub.conf && grub && init 6
<insomnia> это первая
+6
<irony>Конечно же так коду выглядеть нельзя! Зачем вокруг return фигурных скобок наставили?!</irony>
+1
А если еще учесть код HTML + CSS… )
+1
НЛО прилетело и опубликовало эту надпись здесь
[sarcasm] видимо, весь отдел теперь ищет новую работу [/sarcasm]
0
Сенсация! Утекли исходники Office 365!
Или это все таки Google Spreadsheet?
Или это все таки Google Spreadsheet?
+4
В гуглодоксе можно работать над одним файлом сразу нескольким человекам так что исходники гуглодокса тут: jsfiddle.net/sy85U/
+4
Очень круто. А может кто объяснить почему
[].slice.call(document.querySelectorAll("input"));
а не document.querySelectorAll("input");
?0
`querySelectorAll` возвращает `Array-like` объект, а с помощью `slice` мы получаем уже настоящий `Array`, поэтому можем использовать `forEach`
По аналогии иногда используют `Array.prototype.slice.call(arguments)`, так как `arguments` также не `Array`.
По аналогии иногда используют `Array.prototype.slice.call(arguments)`, так как `arguments` также не `Array`.
+3
Спасибо, понятно. А это вообще безопасно вызывать метод Array-а на объекты которые на самом деле не Array?
0
Методы Array делались таким образом, чтобы максимально беспроблемно работать на array-like объектах. Так что, возможно, есть исключения, которых я щас не вспомню, но в целом это не только безопасно, но и официально одобрено Минздравом.
+3
Именно, что расценивать как небезопасно? Можно любой объект таким образом превращать в `Array`. Берется `length` property (если есть) и заполняется массив «undefined» или index values.
Array.prototype.slice.call({}) // -> [ ]
Array.prototype.slice.call({1: 0, length: 2}) // -> [ null, 0]
Array.prototype.slice.call({0: 1, 1: 2, length: 2}) // -> [ 1, 2]
+2
Можно еще так:
Array.apply(null, document.querySelectorAll('div'));
0
если уж так пошло, то лучше бинд на INPUTS
0
Чего?
+1
iterateCells = Array.prototype.forEach.bind(document.querySelectorAll("input"));
и заменить
INPUTS.forEach
на iterateCells
. jsbin.com/EKoviqEn/2/editвместо
Array.prototype
можно написать [],
но это все равно.+1
Может стоит добавить «Ненормальное программирование»?
-2
НЛО прилетело и опубликовало эту надпись здесь
Это, конечно, прикольно, но сколько сотен тысяч строк кода будет в скрипте, если добавить возможность форматирования, объединение ячеек, сортировку, группировку, выделение, фильтры, графики, предустановленные формулы, макросы, внешние данные и многое-многое другое?
Автору респект за смекалку, но называть это Excel — то же самое, что <textarea /> назвать Word'ом
Автору респект за смекалку, но называть это Excel — то же самое, что <textarea /> назвать Word'ом
+20
Все верно, но говорят что 90% пользователей пользуются 10% возможностями программы.
Когда был студентом, проходил летнюю «практику» в универе. Помогал электрикам. Мне ка то начальство принесло огромную таблицу на ватмане а0, какая то ведомость, которую нужно было подсчитать. Компьютера тогда не было ни у меня ни в бухгалтерии. Считать на калькуляторе и сто раз перепроверять было лень. Скачал себе на телефон мидлет, который весил килобайт 20-30. И вот на телефоне с экраном 128х128 за час вбил все данные и получил результат.
Когда был студентом, проходил летнюю «практику» в универе. Помогал электрикам. Мне ка то начальство принесло огромную таблицу на ватмане а0, какая то ведомость, которую нужно было подсчитать. Компьютера тогда не было ни у меня ни в бухгалтерии. Считать на калькуляторе и сто раз перепроверять было лень. Скачал себе на телефон мидлет, который весил килобайт 20-30. И вот на телефоне с экраном 128х128 за час вбил все данные и получил результат.
+2
Вот этим мы и отличаемся. Вместо того, чтобы делать руками, мы пол дня пишем программу, вторую половину дня отлаживаем её, зато потом нажимает одну кнопку и за пару минут все само считается. Надо мной жена постоянно издевается по этому поводу))
+11
Аха, как то мне надоело нажимать хоткей из трех кнопок, в результате недели три времени ушли на создание одного проекта )
+2
И зря. Этот код мы выкладываем на гитхаб и другие люди тратят намного меньше времени, зато пишут код для других задач. Это называется прогресс. А ещё это просто интереснее рутины.
+2
Записки жены программиста
[...] поэтому Серега сел делать приглашения.
Делал он их недолго. Дня два. Лично я думала, что он просто заготовит текст в Word-е, после чего впишет туда имена из списочка, который я ему дала, а затем распечатает, но Серега сказал, что настоящие программеры так не поступают. Настоящие программеры, заявил Серега, существа крайне ленивые, поэтому быстренько создают программу, чтобы она сделала все за них, а список загоняют в комп через сканер. С этими словами он засел, как он выразился, «ваять программулю», которая сама будет брать данные из списка, а затем распечатывать готовые приглашения.
Первоначально мне эта идея даже понравилось. Действительно, чего пыхтеть и забивать данные руками, когда можно загнать данные через сканер, а крутая программуля, написанная крутым программером, сама все распечатает. Однако через пару дней стало понятно, что избранный Серегой способ не так эффективен, как казалось на первый взгляд. Во-первых, программа распознавания текста отказалась четко идентифицировать буквы, написанные мною от руки. Серега заявил, что это не беда, и что он быстренько обучит программу работе с моим почерком. Убив на этот процесс каких-то четыре часа, Серега заявил, что я все время по-разному пишу одинаковые буквы, поэтому программа ничего распознать не может. Пришлось мне тащиться домой, доставать папулькину старую пишущую машинку и выстукивать текст на ней, чтобы программа его могла распознать.
Машинка помогла: текст распознался примерно с 75-процентной эффективностью, поэтому на исправление ошибок распознавания ушло не больше часа (приходилось все проверять с особым старанием, потому что люди обычно не прощают описок в своем имени и фамилии). Когда имена приглашенных наконец были занесены в компьютер, Серега сел «добивать программулю». В первый день окончания «добивания» я так и не дождалась, поэтому ушла домой. Серега остался сидеть за компьютером, изрыгая проклятия, потому что он решил писать программу сразу на новой версии языка, а она его не очень-то слушалась. Когда я появилась на следующий день, Серега сказал, что программа почти готова, и что осталось только выловить некоторые баги. Я ответила, что у нас нет времени ходить на соседний стадион, и я вообще не очень понимаю, как мы поймаем багги, несущийся на полном ходу. Но оказалось, что речь идет не о скоростном автомобильчике, а о всяких сбоях в работе программы, выловить которые, по словам Сергея, намного труднее, чем написать саму программу. На мой вопрос, зачем он вообще затеял всю эту бодягу, когда намного быстрее было бы просто в Word-е вписать имена, Серега ответил, что подобный ламерский подход к лицу какой-нибудь секретарше, но совсем не ему, крутому программеру, и что он после свадьбы еще займется моим воспитанием.
Все баги Серега выловил часа за четыре, потянулся и сказал, что приглашения можно уже вставлять в принтер. При этом выяснилось, что открытки приглашений никто из нас не купил, так как Серега считал, что их куплю я, а я… Ну, сами понимаете. Пришлось мне бежать в ближайший газетный киоск и покупать приглашения. Купила, принесла. Заправили их в принтер. Серега сделал горделивое выражение лица и запустил программу. Принтер засосал первое приглашение. Серега весь раздулся от гордости. Принтер немного подумал, после чего выплюнул совершенно пустую открытку. Серега недоуменно поднял одну бровь. Принтер засосал следующее приглашение. Подумал. Снова выкинул пустое приглашение. Серега приподнял другую бровь. На третьем пустом приглашении брови у Сереги закончились, он остановил программу и стал разбираться, в чем дело.
Оказалось, как радостно заявил Серега, он забыл обнулить каунтер. Обнулив каунтер, Серега снова запустил программу. На этот раз принтер засосал приглашение и стал на нем что-то увлеченно печатать. После этого выплюнул приглашение, засосал следующее и снова начал печатать. Серега снова надулся от гордости и стал мне доказывать преимущества программерского подхода перед ламерским. Однако я обратила внимание на то, что принтер уж как-то очень быстро выплевывает открытки, подошла посмотреть и обнаружила, что на каждой открытке значится только ФИО, но никакого текста приглашения нет.
Тут Серега позеленел, снова полез в программу и стал там с таким ожесточением ковыряться, что я уже боялась за целостность его компьютера. Через полчаса Серега исправил и этот глюк, запустил программу и… наконец-то, первое приглашение было напечатано совершенно правильно! Правда, выглядело оно следующим образом:
„®а®Ј®© Сергей Иванович!
€а Ё ‘ҐаЈҐ© Ё¬Ґов зҐбвм ЇаЁЈ« бЁвм ў б бў ¤мЎг,
Є®в®а п б®бв®Ёвбп 19 ®пЎап ў Ї®¬ҐйҐЁЁ Є дҐ "‡ўҐ§¤®зЄ "
Ї® ¤аҐбг: Ѓ®«ми®© ‚®а®иЁ«®ўбЄЁ© вгЇЁЄ, ¤®¬ 8, Є®аЇгб 2,
бв஥ЁҐ 3, 5 нв ¦ Їа ў® ®в «Ёдв. Ћеа ЁЄг бЄ ¦ҐвҐ, зв®
®в ‘ҐаЈҐп ‚ ᨫ쥢Ёз.
Ќ бзҐв Ї®¤ аЄ®ў ¬®¦® Ґ ЎҐбЇ®Є®Ёвмбп, ¤®бв в®з® Ўг¤Ґв
Їа®бв® ЇаЁҐбвЁ б б®Ў®© ҐЎ®«ми®© Є®ўҐав.
Ѓг¤Ґ¬ ®зҐм а ¤л ў б ўЁ¤Ґвм.
€а Ё ‘ҐаЈҐ©.
Серега, посмотрев на это безобразие, сказал, что беспокоиться нечего, потому что тут просто что-то напутано с кодировками. Он снова полез в программу, и через каких-то 15 минут случилось ЧУДО — первое приглашение было отпечатано так, как надо. На втором, правда, у Сереги в принтере закончился картридж с чернилами.
Делал он их недолго. Дня два. Лично я думала, что он просто заготовит текст в Word-е, после чего впишет туда имена из списочка, который я ему дала, а затем распечатает, но Серега сказал, что настоящие программеры так не поступают. Настоящие программеры, заявил Серега, существа крайне ленивые, поэтому быстренько создают программу, чтобы она сделала все за них, а список загоняют в комп через сканер. С этими словами он засел, как он выразился, «ваять программулю», которая сама будет брать данные из списка, а затем распечатывать готовые приглашения.
Первоначально мне эта идея даже понравилось. Действительно, чего пыхтеть и забивать данные руками, когда можно загнать данные через сканер, а крутая программуля, написанная крутым программером, сама все распечатает. Однако через пару дней стало понятно, что избранный Серегой способ не так эффективен, как казалось на первый взгляд. Во-первых, программа распознавания текста отказалась четко идентифицировать буквы, написанные мною от руки. Серега заявил, что это не беда, и что он быстренько обучит программу работе с моим почерком. Убив на этот процесс каких-то четыре часа, Серега заявил, что я все время по-разному пишу одинаковые буквы, поэтому программа ничего распознать не может. Пришлось мне тащиться домой, доставать папулькину старую пишущую машинку и выстукивать текст на ней, чтобы программа его могла распознать.
Машинка помогла: текст распознался примерно с 75-процентной эффективностью, поэтому на исправление ошибок распознавания ушло не больше часа (приходилось все проверять с особым старанием, потому что люди обычно не прощают описок в своем имени и фамилии). Когда имена приглашенных наконец были занесены в компьютер, Серега сел «добивать программулю». В первый день окончания «добивания» я так и не дождалась, поэтому ушла домой. Серега остался сидеть за компьютером, изрыгая проклятия, потому что он решил писать программу сразу на новой версии языка, а она его не очень-то слушалась. Когда я появилась на следующий день, Серега сказал, что программа почти готова, и что осталось только выловить некоторые баги. Я ответила, что у нас нет времени ходить на соседний стадион, и я вообще не очень понимаю, как мы поймаем багги, несущийся на полном ходу. Но оказалось, что речь идет не о скоростном автомобильчике, а о всяких сбоях в работе программы, выловить которые, по словам Сергея, намного труднее, чем написать саму программу. На мой вопрос, зачем он вообще затеял всю эту бодягу, когда намного быстрее было бы просто в Word-е вписать имена, Серега ответил, что подобный ламерский подход к лицу какой-нибудь секретарше, но совсем не ему, крутому программеру, и что он после свадьбы еще займется моим воспитанием.
Все баги Серега выловил часа за четыре, потянулся и сказал, что приглашения можно уже вставлять в принтер. При этом выяснилось, что открытки приглашений никто из нас не купил, так как Серега считал, что их куплю я, а я… Ну, сами понимаете. Пришлось мне бежать в ближайший газетный киоск и покупать приглашения. Купила, принесла. Заправили их в принтер. Серега сделал горделивое выражение лица и запустил программу. Принтер засосал первое приглашение. Серега весь раздулся от гордости. Принтер немного подумал, после чего выплюнул совершенно пустую открытку. Серега недоуменно поднял одну бровь. Принтер засосал следующее приглашение. Подумал. Снова выкинул пустое приглашение. Серега приподнял другую бровь. На третьем пустом приглашении брови у Сереги закончились, он остановил программу и стал разбираться, в чем дело.
Оказалось, как радостно заявил Серега, он забыл обнулить каунтер. Обнулив каунтер, Серега снова запустил программу. На этот раз принтер засосал приглашение и стал на нем что-то увлеченно печатать. После этого выплюнул приглашение, засосал следующее и снова начал печатать. Серега снова надулся от гордости и стал мне доказывать преимущества программерского подхода перед ламерским. Однако я обратила внимание на то, что принтер уж как-то очень быстро выплевывает открытки, подошла посмотреть и обнаружила, что на каждой открытке значится только ФИО, но никакого текста приглашения нет.
Тут Серега позеленел, снова полез в программу и стал там с таким ожесточением ковыряться, что я уже боялась за целостность его компьютера. Через полчаса Серега исправил и этот глюк, запустил программу и… наконец-то, первое приглашение было напечатано совершенно правильно! Правда, выглядело оно следующим образом:
„®а®Ј®© Сергей Иванович!
€а Ё ‘ҐаЈҐ© Ё¬Ґов зҐбвм ЇаЁЈ« бЁвм ў б бў ¤мЎг,
Є®в®а п б®бв®Ёвбп 19 ®пЎап ў Ї®¬ҐйҐЁЁ Є дҐ "‡ўҐ§¤®зЄ "
Ї® ¤аҐбг: Ѓ®«ми®© ‚®а®иЁ«®ўбЄЁ© вгЇЁЄ, ¤®¬ 8, Є®аЇгб 2,
бв஥ЁҐ 3, 5 нв ¦ Їа ў® ®в «Ёдв. Ћеа ЁЄг бЄ ¦ҐвҐ, зв®
®в ‘ҐаЈҐп ‚ ᨫ쥢Ёз.
Ќ бзҐв Ї®¤ аЄ®ў ¬®¦® Ґ ЎҐбЇ®Є®Ёвмбп, ¤®бв в®з® Ўг¤Ґв
Їа®бв® ЇаЁҐбвЁ б б®Ў®© ҐЎ®«ми®© Є®ўҐав.
Ѓг¤Ґ¬ ®зҐм а ¤л ў б ўЁ¤Ґвм.
€а Ё ‘ҐаЈҐ©.
Серега, посмотрев на это безобразие, сказал, что беспокоиться нечего, потому что тут просто что-то напутано с кодировками. Он снова полез в программу, и через каких-то 15 минут случилось ЧУДО — первое приглашение было отпечатано так, как надо. На втором, правда, у Сереги в принтере закончился картридж с чернилами.
Уж не знаю, вдруг на свете есть ещё люди, которые это не читали:
www.exler.ru/novels/wife.htm
+3
Когда я был в армии (в очень отдалённой точке), к нам приезжал бухгалтер выдавать зарплату офицерам, это было начало 2000-х. Отмечу, что у военнослужащих очень сложная система начисления з/п, она сильно зависит от звания, должности, срока и географии службы.
У бухгалтера с собой был только сейф с деньгами и дискета с XLS документом.
Требовалось вбить несколько параметров в специально отведённые ячейки и на выходе получалась сумма, которую необходимо выплатить офицеру. Документ содержал огромное количество формул и констант, не захламляя рабочий лист с фамилиями и необходимыми параметрами. При том, что весь функционал, находящийся «под капотом», смог составить обычный военный бухгалтер.
Вот в этом сила экселя, а не в том, что можно в две ячейки ввести цифры, а третья их тупо перемножит.
У бухгалтера с собой был только сейф с деньгами и дискета с XLS документом.
Требовалось вбить несколько параметров в специально отведённые ячейки и на выходе получалась сумма, которую необходимо выплатить офицеру. Документ содержал огромное количество формул и констант, не захламляя рабочий лист с фамилиями и необходимыми параметрами. При том, что весь функционал, находящийся «под капотом», смог составить обычный военный бухгалтер.
Вот в этом сила экселя, а не в том, что можно в две ячейки ввести цифры, а третья их тупо перемножит.
+3
Вот в этом сила экселя, а не в том, что можно в две ячейки ввести цифры, а третья их тупо перемножит.
Это я прекрасно понимаю. Но в то же время есть полно историй, когда бухгалтера столбцы на настольном калькуляторе суммируют )
0
Я даже лично знаю таких людей. И они делятся как минимум на две категории:
— женщины за 60, которые отлично знают законодательную базу, но им тяжело с технологиями (именно они тянут всю бухгалтерию)
— все остальные, которые учились на экономических факультетах, т.к. там конкурс меньше *
* тут у нас проблемы в системе образования
— женщины за 60, которые отлично знают законодательную базу, но им тяжело с технологиями (именно они тянут всю бухгалтерию)
— все остальные, которые учились на экономических факультетах, т.к. там конкурс меньше *
* тут у нас проблемы в системе образования
+2
Да не в образовании проблема, а в головах. Еще в школе преподают компьютерную грамотность, в том числе обучают работе в офисном пакете.
0
Знаете, в 8 классе я учился в негосударственной школе и нам на уроках информатики преподавали QBasic. Позже я переехал и 10-11 класс ('98-'00 годы) заканчивал в обычной московской школе. Там нам два года рассказывали что такое «манипулятор типа мышь» и как правильно выключать компьютер.
+2
А ещё есть такие люди, которые полагают, что для сложения двух чисел калькулятор удобнее, чем запуск специальной программы. У меня был как-то калькулятор к клавиатуре приклеен для таких нужд.
+1
Потому как это реально удобней. У меня и сейчас Citizen SRP145 всегда под рукой лежит.
+1
У меня ровно наоборот — с какого-то момента для абсолютно любых расчетов запускаются электронные таблицы или на худой кнец bc (это линуксовый консольный калькулятор — с переменными, функциями и т.д.). Потому что — история, простота просмотра и проверки того, что именно делал. А когда это понадобится — неизвестно. Сто раз было, что захочешь одну операцию с парой чисел сделать, а заканчивается жирной формулой.
+1
Иногда имеет смысл. Если эти столбцы предварительно заполняли не вы сами!
С год назад читал историю, как один бухгалтер не повёлся на «Да зачем пересчитывать то? Видите, тут обычная формула =SUM по столбцу!» и таки пересчитал итоги выставленного счёта. И вот там последствия скрытой строки, в которую продавец-мошенник вписал лишнюю 1000р. и всплыли!
С год назад читал историю, как один бухгалтер не повёлся на «Да зачем пересчитывать то? Видите, тут обычная формула =SUM по столбцу!» и таки пересчитал итоги выставленного счёта. И вот там последствия скрытой строки, в которую продавец-мошенник вписал лишнюю 1000р. и всплыли!
+5
Вы не поверите, но в селах до сих пор пользуется счетами
+1
Это просто показательный пример, что не нужно для решения простых задач подключать Jquery, ExtJs.
+5
Круто! Только все-таки плохо, что все ссылки — абсолютные. Я ничего не понимаю в JS, и понятно что это — не для практического применения, но по-моему относительные ссылки были бы не сложнее
0
Кажется, Вы только что перебили бизнес Microsoft-у. )
+1
Во-первых не без багов.
Во-вторых можно улучшить.
В третьих молодца!, но код что-то не радует глаз.
Во-вторых можно улучшить.
В третьих молодца!, но код что-то не радует глаз.
0
Спасибо, что перепостили с хакерньюс статью — теперь желательно объяснить, как оно всё работает.
+5
Действительно круто!
Не сразу понял откуда "@" в самой первой ячейке. Тоже довольно изящное решение, хоть и мелочь )
Не сразу понял откуда "@" в самой первой ячейке. Тоже довольно изящное решение, хоть и мелочь )
+1
не удобно вводить данные, энтер не в ячейке не обрабатывается, кто бы допилил?
0
Переписал на нормальный лад с поддержкой enter jsbin.com/OxuqUNoX/2/
0
Мощно!
Вся магия в одной строке:
все остальное — обвесы…
Вся магия в одной строке:
with (DATA) return eval(value.substring(1));
все остальное — обвесы…
+2
Нет там никакой магии, код написал безобразно.
Вот пример как это могло быть: jsbin.com/OxuqUNoX/7/edit
Вот пример как это могло быть: jsbin.com/OxuqUNoX/7/edit
-1
Воу-воу-оу, полегче!
У службы 911 уже все линии заняли в предынфарктном состоянии разработчики MS Office.
У службы 911 уже все линии заняли в предынфарктном состоянии разработчики MS Office.
0
Хабравчане, а вдруг кому не лень довести сей пример до практического, для использования на реальных продуктах? Больше проверок на корректность, относительный ссылки, запрет на всё кроме избранного списка операций, работа с Enter'ом (выше уже было, видел), экспорт/импорт файлов формата CSV, копирование строк, столбцов и областей?
0
Добавляется регулярочка в проверку
Профит!
ЗЫ Даже первое условие можно удалить, оставив только регулярку
var re = /^=(\(?([a-zA-Z]{1,10}[0-9]{1,10})\)?(\+|-|\*|\/)?)+$/;
if (value.charAt(0) == "=" && value.search(new RegExp(re)) != -1 ) {}
Профит!
ЗЫ Даже первое условие можно удалить, оставив только регулярку
+1
Чтобы оставить количество строк равное 30 в скрипте
:D
if (value.search(new RegExp(/^=(\(?([a-zA-Z]{1,10}[0-9]{1,10})\)?(\+|-|\*|\/)?)+$/)) != -1 ) {}
:D
+2
почему не написать /^...$/.test(value)?
0
Ну наверное потому что
test:
search:
Т.е. без разницы.
Или есть аргументы непосредственно в пользу test?
test:
Используется, чтобы выяснить, есть ли совпадения регулярного выражения со строкой, аналогично String#search.
search:
Этот метод удобен, когда нужно проверить, есть ли совпадения с регулярным выражением (аналогично RegExp#test).
Т.е. без разницы.
Или есть аргументы непосредственно в пользу test?
+1
Разве вы таким образом не срежете всё, кроме обыкновенной арифметики?
В то время как в этом «Экселе» в изначальном виде может работать что-нибудь посложнее, как к примеру «Math.sqrt()».
Если уж урезать, то ценные вещи нужно оставлять. А то у него функционала остаётся меньше чем у обычного калькулятора.
В то время как в этом «Экселе» в изначальном виде может работать что-нибудь посложнее, как к примеру «Math.sqrt()».
Если уж урезать, то ценные вещи нужно оставлять. А то у него функционала остаётся меньше чем у обычного калькулятора.
0
Разве вы таким образом не срежете всё, кроме обыкновенной арифметики?
Ну читая комменты я понял, что другое и не поддерживается (не должно).
Если поддерживается что-то ещё, то можно добавить.
В то время как в этом «Экселе» в изначальном виде может работать что-нибудь посложнее, как к примеру «Math.sqrt()».
Хм, это я не видел. Можно и это добавить.
Готов помочь в этом. Но надо примеры, под которые подстраиваться.
0
Ничего более полезного в ячейку не додумался записать…
= for(i=A1; i<B1; i++){console.log(i)}
= for(i=A1; i<B1; i++){console.log(i)}
0
Был такой проект от Tidestone — F1Report. что то типа light Excel. Никто его исходников не имеет? А такие же легкие аналоги не знает?
0
Реквестирую 1С в 50 строк!
0
в между тем этот эксель уже ужали до 328 байт
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Крошечный Excel на чистом JavaScript (30 строк кода)