![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| GoldFinch |
|
||||||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Надо написать страничку для расчета каких-то значений по формулам.
Пользователь вводит несколько чисел, и получает рассчитанные результаты. Желательно реализовать код как можно более наглядно и удобно для редактирования, развязав интерфейс и код формул Получилось примерно следующее:
можно ли как-то улучшить такой код? |
||||||
|
|||||||
| Aliance |
|
|||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
Могу посоветовать не использовать with - он тормозит скрипт.
Так же, возможно, в твоей функции calc стоит использовать метод call() / apply() Потом, мне кажется у тебя слишком уж много лишних функций. Попробуй упростить это. |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
Действительно, идея возврата функцией списка своих входных параметров хоть и хороша, но
function foo©{ if©return {x1:0,x2:0}; ... } синтаксически мало отличается от function foo(){args('x1','x2'); ... } причем последняя запись короче. Функцию storeHTML можно занести в Foo, заменив return {y1:...,y2:...} на ret('y1','y2') Минусы такого подхода - небольшое повышение связей между кодом расчетов и кодом работающим с DOM, впрочем 2 функции с очевидными названиями и применением погоды не сделают. Получился такой код:
однако хотелось бы еще избавиться от with(Math) Добавлено через 6 минут мде... в firefox'е x=expr добавляет свойство в объект, а в IE надо писать this.x=expr это можно както обойти, чтобы this. не писать? |
|||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 2 Всего: 16 |
||||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
youri, само собой и не Math.pow()
пример кода - выше
|
|||
|
||||
| youri |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 17.4.2004 Репутация: 2 Всего: 16 |
в качестве объекта в данном случае - window (т.е. это глобальные переменные получаются) ie создает глобальные переменные для элементов с id, но почему он так ругается O_o можно к id элементов добавлять подчеркивание |
|||
|
||||
| Aliance |
|
||||
![]() I ♥ <script> ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6418 Регистрация: 2.8.2004 Где: spb Репутация: 55 Всего: 137 |
А что не устраивает в написании this?
А что мешает? Кстати, по поводу with() {}, в ECMAScript 5.0 он вообще считается устаревшим и не рекомендован к использованию:
(с) с блога John Resig |
||||
|
|||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
GoldFinch, требуется ли большая скорость вычисления выражений или массовоое (в большом цикле) выполнение введенных формул? Можел оказаться эффективнее создавать функцию-формулу на ходу методом new Function...
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
требуется наиболее удобная форма записи, позволяющая писать и читать математические формулы
поэтому запись this.x=Math.sqrt(1+Math.log(1+2*Math.pi/theta)) нежелательна скорость не принципиальна |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
GoldFinch, Наиболее удобная форма, позволяющая читать мат формулы - нормальная математическая. В Маткаде реализован довольно удобный способ ввода формул. Возможно, будет правильным поискать на флеш какую-нибудь реализацию ввода-отображения формул в MathCad-like стиле.
-------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
ksnk, у dhtml+javascript зависимостей практически нет, и писать на нем приятно.
вместо флеш+маткад проще тогда на C# или на С++/CLI, но хотелось бы на javascript |
|||
|
||||
| ksnk |
|
|||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
Вот еще почитать. Оказывается, отображение формул уже практически стандартизовано. Но как всегда через жW3С.
Отображение формул можно и проще сделать, вот так, к примеру. А вот ввод формул в стиле МатКада в нужное место с выделением необходимых частей формулы уже очень сложно делать на JavaScript. Так что придется, наверное вводить в TEX виде... На флешке, по идее, это сделать было бы проще... -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
ksnk, мне отображение формул в хтмл вообще не надо, я говорил про код. про читаемость кода.
|
|||
|
||||
| ksnk |
|
||||
![]() прохожий ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 6855 Регистрация: 13.4.2007 Где: СПб Репутация: 84 Всего: 386 |
GoldFinch, Хм... А я как всегда какую-то свою задачу начал решать
А почему это нежелательна? Потому что слишком длинная конструкция Math.sqrt? А вот так
более приемлемо? для кого пишется код? Какого вида формулы будут желательны? -------------------- Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! |
||||
|
|||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: нет Всего: 26 |
ksnk, "var SQRT=Math.sqrt" действительно хорошее решение
|
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |