PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (3): « 1 [2] 3 »

> Найдено сообщений: 44
Эдвард Отправлено: 30 Сентября, 2014 - 13:18:07 • Тема: Помогите упростить скрипт • Форум: JavaScript & VBScript

Ответов: 43
Просмотров: 22078
Что-то приумолкли все. Помогите кто-нибудь хотя бы ошибку исправить. Ведь для людей с знаниями это не так сложно, а я уже несколько дней мучаюсь над задачей.
Эдвард Отправлено: 27 Сентября, 2014 - 16:45:08 • Тема: Помогите упростить скрипт • Форум: JavaScript & VBScript

Ответов: 43
Просмотров: 22078
Блин, весь мозг сломал – ничего не выходит.

Последний мой вариант:

CODE (javascript):
скопировать код в буфер обмена
  1. var d = new Array();
  2.  
  3. var a = new Array();
  4. var b = new Array();
  5. var c = new Array();
  6.  
  7. for (var i = 0; i < 3; i++)
  8.           d[i] = Math.ceil(a[i]/100)+Math.ceil(b[i]/100)+Math.ceil(c[i]/100);
  9.  
  10. form.total10.value = d[0];
  11. form.total11.value = d[1];
  12. form.total12.value = d[2];


Теперь результат для total (10, 11, 12) – NaN, NaN, NaN. Подозреваю, что проблема в переменных a, b, c. Но как их правильно оформить, ума не приложу.
Эдвард Отправлено: 26 Сентября, 2014 - 15:17:46 • Тема: Помогите упростить скрипт • Форум: JavaScript & VBScript

Ответов: 43
Просмотров: 22078
RickMan пишет:
1) Вы массивы a, b, c создали?


Всё перепробовал. Не знаю, как это сделать правильно. Если, например, так:

CODE (javascript):
скопировать код в буфер обмена
  1. a = 0;
  2. b = 0;
  3. c = 0;


то в total(10, 11, 12) всплывает ошибка undefined .

RickMan пишет:
Вы логи браузера смотрели? Чтобы не гадать что за ошибка там


Проверял на ошибки здесь: http://www[dot]javascriptlint[dot]com/online_lint.php . Ничего вразумительного: у строки for якобы не хватает точки с запятой; а у строки d[i] – фигурных скобок.

RickMan пишет:
Вы в курсе как вообще работает и пишется for?


Нет. Первый раз сталкиваюсь на практике.

RickMan пишет:
Зачем вы строку после for поставили черти где?


Скопировал точь-в-точь как у Вас – всё равно криво работает.
Эдвард Отправлено: 26 Сентября, 2014 - 13:43:35 • Тема: Помогите упростить скрипт • Форум: JavaScript & VBScript

Ответов: 43
Просмотров: 22078
RickMan пишет:
А переменные a1, a2 и a3? Так же с b и с.
И с итоге получится
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. for (i = 0; i < 3; i++)
  3.          d[i] = Math.ceil(a[i]/100)+Math.ceil(b[i]/100)+Math.ceil(c[i]/100);


Записал так:

CODE (javascript):
скопировать код в буфер обмена
  1. var d = new Array()
  2.  
  3. for (i = 0; i < 3; i++)
  4.  
  5. d[i] = Math.ceil(a[i]/100)+Math.ceil(b[i]/100)+Math.ceil(c[i]/100);
  6.  
  7. form.total10.value = d[i];
  8. form.total11.value = d[i];
  9. form.total12.value = d[i];


В итоге калькуляция вообще перестала работать. Где-то допущено ошибка.
Эдвард Отправлено: 26 Сентября, 2014 - 12:58:23 • Тема: Помогите упростить скрипт • Форум: JavaScript & VBScript

Ответов: 43
Просмотров: 22078
RickMan пишет:
Для начала сделай вместо d1, d2, d3 и так дале массив с названием d, а цифры 1, 2 и 3 - индексы массива... тоесть d1 станет d[1]... и в таком формате переменных будет меньше, и такое закинуть в цикл легче намного.
(Добавление)
Ну и так со всеми подобными переменными.


Допустим, сделаю так:

CODE (javascript):
скопировать код в буфер обмена
  1. var d = new Array()
  2.  
  3. d[0] = Math.ceil(a1/100)+Math.ceil(b1/100)+Math.ceil(c1/100);
  4. d[1] = Math.ceil(a2/100)+Math.ceil(b2/100)+Math.ceil(c2/100);
  5. d[2] = Math.ceil(a3/100)+Math.ceil(b3/100)+Math.ceil(c3/100);
  6.  
  7. form.total10.value = d[0];
  8. form.total11.value = d[1];
  9. form.total12.value = d[2];


Но что от этого изменится в плане упрощения скрипта? Формулы-то для каждой переменной всё равно разные.
Эдвард Отправлено: 26 Сентября, 2014 - 11:26:52 • Тема: Помогите упростить скрипт • Форум: JavaScript & VBScript

Ответов: 43
Просмотров: 22078
Дайте хотя бы какую-нибудь зацепку. Прошерстил весь Интернет – всюду даны одни и те же примеры с выводом на страницу (либо всплывающие окна) цифр от 1 до ∞ или других перечней. К сожалению, нигде пока не нашёл примеры циклов с несколькими условиями и сложными формулами, хоть чем-то и отдалённо напоминающими мой скрипт.
Эдвард Отправлено: 26 Сентября, 2014 - 04:58:11 • Тема: Помогите упростить скрипт • Форум: JavaScript & VBScript

Ответов: 43
Просмотров: 22078
tato пишет:
Эдвард, Вам срочно надо почитать про циклы.


Почитал. Но как применить конкретно к моему случаю, не понимаю.
Эдвард Отправлено: 25 Сентября, 2014 - 19:37:14 • Тема: Помогите упростить скрипт • Форум: JavaScript & VBScript

Ответов: 43
Просмотров: 22078
Погряз в формулах и никак не могу придумать, как их упростить. Здесь показано, как работает скрипт: http://med-75[dot]hol[dot]es/4/1.php . Основная задача – реализовать счётчик игр для каждого из игроков (по команде "Калькуляция"). Если ограничиться тремя днями, моя реализация терпима, но при составлении таблицы игр на месяц код раздуется до невероятных размеров (например, для последнего числа месяца в каждом из условий придётся прописывать формулы из тридцати элементов).

Была мысль создать шаблоны формул в виде переменных. Но подсчитав, понял, что и это будет выглядеть слишком громоздко. Наверняка существует способ более компактной реализации данного счётчика. Прошу помощи у знатоков.

Вот мой вариант скрипта, отвечающего за математическую часть кода:

CODE (javascript):
скопировать код в буфер обмена
  1. function calculator(form) {
  2.  
  3. k1 = form.k1.value;
  4. k2 = form.k2.value;
  5. k3 = form.k3.value;
  6.  
  7. x1 = k1;
  8.          
  9. switch (x1)
  10. {      
  11. case "Игра 1 " : a1=1 , a2=1 , a3=""; break;
  12. case "Игра 2 " : a1=1 , a2="" , a3=1; break;
  13. case "Игра 3 " : a1="" , a2=1 , a3=1; break;
  14. case "Резерв " : a1=0 , a2=0 , a3=0; break;
  15. default:  a1="" , a2="" , a3="";
  16. }
  17.  
  18. x2 = k2;
  19.          
  20. switch (x2)
  21. {      
  22. case "Игра 1 " : b1=1+a1 , b2=1+a2 , b3=""; break;
  23. case "Игра 2 " : b1=1+a1 , b2="" , b3=1+a3; break;
  24. case "Игра 3 " : b1="" , b2=1+a2 , b3=1+a3; break;
  25. case "Резерв " : b1=0 , b2=0 , b3=0; break;
  26. default:  b1="" , b2="" , b3="";
  27. }
  28.  
  29. x3 = k3;
  30.          
  31. switch (x3)
  32. {      
  33. case "Игра 1 " : c1=1+Math.ceil(a1/100)+Math.ceil(b1/100) , c2=1+Math.ceil(a2/100)+Math.ceil(b2/100) , c3=""; break;
  34. case "Игра 2 " : c1=1+Math.ceil(a1/100)+Math.ceil(b1/100) , c2="" , c3=1+Math.ceil(a3/100)+Math.ceil(b3/100); break;
  35. case "Игра 3 " : c1="" , c2=1+Math.ceil(a2/100)+Math.ceil(b2/100) , c3=1+Math.ceil(a3/100)+Math.ceil(b3/100); break;
  36. case "Резерв " : c1=0 , c2=0 , c3=0; break;
  37. default:  c1="" , c2="" , c3="";
  38. }
  39.  
  40. d1 = Math.ceil(a1/100)+Math.ceil(b1/100)+Math.ceil(c1/100);
  41. d2 = Math.ceil(a2/100)+Math.ceil(b2/100)+Math.ceil(c2/100);
  42. d3 = Math.ceil(a3/100)+Math.ceil(b3/100)+Math.ceil(c3/100);
  43.  
  44. if (a1=="0") {
  45. var a1 = "Р";
  46. }
  47.  
  48. if (a2=="0") {
  49. var a2 = "Р";
  50. }
  51.  
  52. if (a3=="0") {
  53. var a3 = "Р";
  54. }
  55.  
  56. if (b1=="0") {
  57. var b1 = "Р";
  58. }
  59.  
  60. if (b2=="0") {
  61. var b2 = "Р";
  62. }
  63.  
  64. if (b3=="0") {
  65. var b3 = "Р";
  66. }
  67.  
  68. if (c1=="0") {
  69. var c1 = "Р";
  70. }
  71.  
  72. if (c2=="0") {
  73. var c2 = "Р";
  74. }
  75.  
  76. if (c3=="0") {
  77. var c3 = "Р";
  78. }
  79.  
  80. form.total1.value = a1;
  81. form.total2.value = a2;
  82. form.total3.value = a3;
  83. form.total4.value = b1;
  84. form.total5.value = b2;
  85. form.total6.value = b3;
  86. form.total7.value = c1;
  87. form.total8.value = c2;
  88. form.total9.value = c3;
  89. form.total10.value = d1;
  90. form.total11.value = d2;
  91. form.total12.value = d3;
  92.  
  93. }
Эдвард Отправлено: 21 Сентября, 2014 - 23:19:58 • Тема: Преобразование буквенного символа в цифру • Форум: JavaScript & VBScript

Ответов: 17
Просмотров: 2430
dcc0 пишет:
через цикл.


Это пока сложно для меня.
Эдвард Отправлено: 21 Сентября, 2014 - 23:10:12 • Тема: Преобразование буквенного символа в цифру • Форум: JavaScript & VBScript

Ответов: 17
Просмотров: 2430
dcc0 пишет:
Вопрос только в том, как вы организуете код, когда у вас будет 60 полей.


Может, можно через switch?..
Эдвард Отправлено: 21 Сентября, 2014 - 22:02:36 • Тема: Преобразование буквенного символа в цифру • Форум: JavaScript & VBScript

Ответов: 17
Просмотров: 2430
Интересную мысль подсказали: не Р менять на 0, а 0 – на Р. Спасибо. Сам, скорее, не догадался бы.

Записал сейчас так:

CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <meta charset="utf-8">
  3.  
  4. <head>
  5.  
  6. <script type="text/javascript">
  7.  
  8. function calculator(form) {
  9.  
  10.  
  11. r1 = form.r1.value;
  12. n1 = form.n1.value;
  13. n2 = form.n2.value;
  14. n3 = form.n3.value;
  15. n4 = form.n4.value;
  16.  
  17. x1 = r1;
  18.  
  19. switch (x1)
  20. {      
  21. case "1+2+3+4" : a1=1; a2=2; a3=3; a4=4; break;
  22. case "Р+2+3+4" : a1=0; a2=2; a3=3; a4=4; break;
  23. case "1+Р+3+4" : a1=1; a2=0; a3=3; a4=4; break;
  24. case "1+2+Р+4" : a1=1; a2=2; a3=0; a4=4; break;
  25. case "1+2+3+Р" : a1=1; a2=2; a3=3; a4=0; break;
  26. default:  a1=""; a2=""; a3=""; a4="";
  27. }
  28. b1=a1+a2+a3+a4;
  29.  
  30. if (a1==0) {
  31. var a1 = "Р";
  32. }
  33.  
  34. if (a2==0) {
  35. var a2 = "Р";
  36. }
  37.  
  38. if (a3==0) {
  39. var a3 = "Р";
  40. }
  41.  
  42. if (a4==0) {
  43. var a4 = "Р";
  44. }
  45.  
  46. form.n1.value = a1;
  47. form.n2.value = a2;
  48. form.n3.value = a3;
  49. form.n4.value = a4;
  50. form.total1.value = b1;
  51.  
  52. }
  53.  
  54. </script>
  55. </head>
  56.  
  57. <form name="f1">
  58.  
  59. <select name="r1">
  60.  <option>1+2+3+4</option>
  61.  <option>Р+2+3+4</option>
  62.  <option>1+Р+3+4</option>
  63.  <option>1+2+Р+4</option>
  64.  <option>1+2+3+Р</option>
  65.  </select> <input name="n1" type="text" size="5" align="center"> <input name="n2" type="text" size="5" align="center"><input name="n3" type="text" size="5" align="center"> <input name="n4" type="text" size="5" align="center">
  66. <br>
  67. <input type="button" value="Калькуляция" onClick="calculator(this.form)">
  68. <br>
  69. <input name="total1" type="text" size="5" align="center">
  70. <input name="total2" type="text" size="5" align="center">
  71.  
  72. </form>
  73. </html>


Вроде работает.
Эдвард Отправлено: 21 Сентября, 2014 - 20:32:27 • Тема: Преобразование буквенного символа в цифру • Форум: JavaScript & VBScript

Ответов: 17
Просмотров: 2430
dcc0 пишет:
тут все совсем просто


Если б... Выше я уже писал о том, что необходимо сохранять в ячейках оригинальные значения (в т. ч. буквенные), а заменять буквы на числа (в частности Р на 0) лишь при вычислениях.
Эдвард Отправлено: 21 Сентября, 2014 - 19:54:08 • Тема: Преобразование буквенного символа в цифру • Форум: JavaScript & VBScript

Ответов: 17
Просмотров: 2430
А вот для более сложной задачи (когда значения "инпутов" заведомо заданы и внесены в условие), такая конструкция уже не работает: http://med-75[dot]hol[dot]es/1/7[dot]html .

CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <meta charset="utf-8">
  3.  
  4. <head>
  5.  
  6. <script type="text/javascript">
  7.  
  8. function calculator(form) {
  9.  
  10.  
  11. r1 = form.r1.value;
  12. n1 = form.n1.value;
  13. n2 = form.n2.value;
  14. n3 = form.n3.value;
  15. n4 = form.n4.value;
  16.  
  17. x1 = r1;
  18.  
  19. if (isNaN(n1))
  20. var n1 = 0;
  21.  
  22. if (isNaN(n2))
  23. var n2 = 0;
  24.  
  25. if (isNaN(n3))
  26. var n3 = 0;
  27.  
  28. if (isNaN(n4))
  29. var n4 = 0;
  30.  
  31. switch (x1)
  32. {      
  33. case "1+2+3+4" : a1=1; a2=2; a3=3; a4=4; break;
  34. case "Р+2+3+4" : a1="Р"; a2=2; a3=3; a4=4; break;
  35. case "1+Р+3+4" : a1=1; a2="Р"; a3=3; a4=4; break;
  36. case "1+2+Р+4" : a1=1; a2=2; a3="Р"; a4=4; break;
  37. case "1+2+3+Р" : a1=1; a2=2; a3=3; a4="Р"; break;
  38. default:  a1=""; a2=""; a3=""; a4="";
  39. }
  40.  
  41. b1=a1+a2+a3+a4
  42.  
  43. form.n1.value = a1;
  44. form.n2.value = a2;
  45. form.n3.value = a3;
  46. form.n4.value = a4;
  47. form.total1.value = b1;
  48. }
  49.  
  50. </script>
  51. </head>
  52.  
  53. <form name="f1">
  54.  
  55. <select name="r1">
  56.  <option>1+2+3+4</option>
  57.  <option>Р+2+3+4</option>
  58.  <option>1+Р+3+4</option>
  59.  <option>1+2+Р+4</option>
  60.  <option>1+2+3+Р</option>
  61.  </select> <input name="n1" type="text" size="5" align="center"> <input name="n2" type="text" size="5" align="center"><input name="n3" type="text" size="5" align="center"> <input name="n4" type="text" size="5" align="center">
  62. <br>
  63. <input type="button" value="Калькуляция" onClick="calculator(this.form)">
  64. <br>
  65. <input name="total1" type="text" size="5" align="center">
  66. <input name="total2" type="text" size="5" align="center">
  67.  
  68. </form>
  69. </html>


Интересно, имеется ли какой-то способ в данной ситуации представить букву "Р" в виде цифры 0?
Эдвард Отправлено: 21 Сентября, 2014 - 13:14:02 • Тема: Преобразование буквенного символа в цифру • Форум: JavaScript & VBScript

Ответов: 17
Просмотров: 2430
Возьму на вооружение этот пример. Но пока основная задача по данному моменту выполнена. Сильно усложнять код тоже не хотелось бы, т. к. калькулятор, над которым работаю, будет совершать операции не с двумя ячейками, а с шестьюдесятью. К тому же, одной и той же функцией скрипт должен вычислить сумму числовых значений (исключая буквенные) и количество букв (исключая числа). И если первая задача сейчас понятна, то со второй предстоит помучиться: http://med-75[dot]hol[dot]es/1/6[dot]html .

CODE (html):
скопировать код в буфер обмена
  1. <html>
  2. <meta charset="utf-8">
  3.  
  4. <head>
  5.  
  6. <script type="text/javascript">
  7.  
  8. function calculator(form) {
  9.  
  10.  
  11. r1 = form.r1.value;
  12. n1 = form.n1.value;
  13. n2 = form.n2.value;
  14. n3 = form.n3.value;
  15. n4 = form.n4.value;
  16.  
  17. x1 = r1;
  18.  
  19. if (isNaN(n1))
  20. var n1 = 0;
  21.  
  22. if (isNaN(n2))
  23. var n2 = 0;
  24.  
  25. if (isNaN(n3))
  26. var n3 = 0;
  27.  
  28. if (isNaN(n4))
  29. var n4 = 0;
  30.  
  31. switch (x1)
  32. {      
  33. case "+" : a1=(n1*1)+(n2*1)+(n3*1)+(n4*1); break;
  34. default:  a1="";
  35. }
  36. form.total1.value = a1;
  37.  
  38.  
  39. }
  40.  
  41. </script>
  42. </head>
  43.  
  44. <form name="f1">
  45.  
  46. <select name="r1">
  47.  <option>+</option>
  48. </select> <input name="n1" type="text" size="5" align="center"> <input name="n2" type="text" size="5" align="center"><input name="n3" type="text" size="5" align="center"> <input name="n4" type="text" size="5" align="center">
  49. <br>
  50. <input type="button" value="Калькуляция" onClick="calculator(this.form)">
  51. <br>
  52. <input name="total1" type="text" size="5" align="center">
  53. <input name="total2" type="text" size="5" align="center">
  54.  
  55. </form>
  56. </html>


По замыслу, во втором результирующем окне должно отобразиться количество ячеек, в которые были введены нечисловые символы.
Эдвард Отправлено: 21 Сентября, 2014 - 12:21:10 • Тема: Преобразование буквенного символа в цифру • Форум: JavaScript & VBScript

Ответов: 17
Просмотров: 2430
Большое спасибо! Это именно то, что мне было нужно.

Страниц (3): « 1 [2] 3 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB