Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/3: Рейтинг темы: голосов - 3, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 02.06.2019
Сообщений: 9

Массивы в javascript

07.09.2019, 23:14. Показов 661. Ответов 3
Метки html (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Я пишу калькулятор на js для сайта с динамическими select

Проблема в том что я при написании условия для второго(зависимого) select указываю индекс массива по которому строится условие, но при изменении первого select условие зависимого select остается,в то время как там должно быть другое условие .

Очень надеюсь на вашу помощь.
Заранее спасибо!


HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<select name="type" id="type">
  <option value="ptp" selected>Подготовка технического плана</option>
  <option value="mzh">Межевание</option>
  <option value="dpu">Дополнительные услуги</option>
  <option value="tps">Топографическая съёмка</option>
</select>
<select name="service" id="service" value="">
</select>
<DIV >Площадь (м.кв)</DIV>
<input type="number" value="" id="square">
 
<DIV >Кол-во помещений</DIV>
<input type="number" value="" id="object">
 
<button onclick="rez();"></button>
<DIV id="total"></DIV>
 
<script type="text/javascript">
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
var services = {
        ptp:["Подготовка технического плана квартиры", "Подготовка технического плана нежилого помещения (части здания, части помещения)","Подготовка технического плана на несколько нежилых помещений, частей помещений, частей здания (офисные центры, торговые центры)","Подготовка технического плана ИЖС, дачного дома, гаража и т.д.","Подготовка технического плана нежилого здания","Подготовка технического плана линейного сооружения или Карты (плана) на зону с особыми условиями использования", "Подготовка технического плана многоквартирного дома","Выполнение запроса о предоставлении разрешительных документов", " Подготовка акта обследования"],
        mzh:["Подготовка межевого плана","Согласование границ","Подготовка межевого плана при*разделе участка","Подготовка межевого плана при*объединении участков","формирование части участка", "Подготовка схемы границ на КПТ","Вынос точек в натуру"],
        dpu:["получение выписки ЕГРН", "Подача документов для государственного кадастрового учёта и (или) государственной регистрации прав","Утверждение схемы границ на КПТ в  ДГИ г. Москвы."],
        tps:["Топографическая съёмка в Москве","Топографическая съёмка в Московской области","Согласование топографической съёмки в эксплуатирующих организациях","Подготовка ситуационного плана в масштабе 1:2000-1:10000"]
};
 
 
 
var type = document.getElementById("type");
var service = document.querySelector("#service");
window.onload = selectType;
type.onchange = selectType;
 
function selectType(ev){
  service.innerHTML = "";
  var c = this.value || "ptp", o;
  for(let i = 0; i < services[c].length; i++){
    o = new Option(services[c][i],i,false,false);
    service.add(o);
  };
}
 
 
 
function rez(){
    service1 = document.getElementById("service").value;
    square =  document.getElementById("square").value;
    object = document.getElementById("object").value;
    square = parseInt(square);
    object = parseInt(object);
    let cost = 0;
    if (service1 == "0" && square<=100){
        cost=15000;
    }
    if (service1 == "0" && square>100){
        cost=square*50+9000;
    }
 
    else if (service1 == "1" && square<=200){
        cost=20000;
    }
    else if (service1 == "1" && square>200 && square<=500){
        cost=(square-200)*50+20000;
    }
 
    else if (service1 == "1" && square>500 && square<=1000){
        cost=(square-500)*40+35000;
    }
 
    else if (service1 == "1" && square>1000){
        cost=(square-1000)*30+55000;
    }
 
    else if (service1 == "2" && object<=10){
        cost=object*6000;
    }
 
    else if (service1 == "2" && object>10 && object<=50){
        cost=(object)-10*5000+60000;
    }
 
    else if (service1 == "2" && object>50){
        cost=(object)-50*3000+260000;
    }
 
 
 
     
    document.getElementById('total').innerHTML = "Стоимость равна:"+cost+"p.";
}
 
</script>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.09.2019, 23:14
Ответы с готовыми решениями:

Массивы в javascript
Заданный массив из n элементов. Построить вектор из элементов исходного массива с четными индексами. ВОТ МОЙ КОД! &lt;html&gt; ...

Массивы в javascript
Существует ли ограничение на размер массивов в javascript? На сайте lynda.com приводят пример работы с большими таблицами. Чтобы не...

Массивы и JavaScript
Такая вот задачка, я её почти решила, но не могу разобраться в одном месте: &lt;script language=&quot;JavaScript&quot;&gt; function...

3
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
08.09.2019, 15:05
Illorion, даа.... ужос
Для начала - посмотрите консоль.
Далее, объясните, что Вы хотте в 12 и 13 строках получить.
Что Вы хотите функции selectType в качестве аргумента ev (а это событие, но работать в Вашем примере не будет) и главное для чего предаёте?
Ну и вишенка на тортике - столько if'ов в функции rez(), что свихнуться можно. А главное зачем, сами потом запутаетесь.
Разбейте первое условие для service1 на case'ы, а потом дробите if'ами интервалы для square и object:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
switch(service1)
{
   case '0':
         //условие для ....
   break;
   case '1':
         //условие для ....
   break;
   case '2':
         //условие для ....
   break;
}
Хотя у Вас скорее всего неправильно построена логика.
Вдогонку - у Вас куча цифирей - констант, лучше их обозначьте в скрипте, для удобства изменений.
0
Эксперт JS
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
08.09.2019, 16:32
Illorion, atanov, общее правило - если условий больше пяти,
то скорее всего надо удалить if и switch и написать нормальную обработку данных в массиве.

Все бизнес-правила обычно прекрасно описываются в таблице БД.
Вывод: нам никто не мешает таким же макаром затолкать бизнес-правила в массив JS.
1
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
08.09.2019, 18:18
Цитата Сообщение от amr-now Посмотреть сообщение
общее правило - если условий больше пяти,
то скорее всего надо удалить if и switch и написать нормальную обработку данных в массиве.
всеми конечностями ЗА.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.09.2019, 18:18
Помогаю со студенческими работами здесь

JavaScript и ассоциативные массивы
Поддерживает ли JavaScript асоциативные массивы?..

массивы в HTML с использованием JavaScript
1. Найти количество простых чисел в интервале от a до b. 2. Дан массив A, состоящий из n элементов. Удалить все четные элементы. 3....

массивы в HTML с использованием JavaScript
1)Дан массив A, состоящий из n элементов. Удалить из массива последний четный элемент. Вывести новый массив. 2) Дан массив A, состоящий...

Массивы в html с подключением javascript
1. Дан массив A, состоящий из n элементов. Удалить элементы с k1-го по k2-ой, где k1 и k2 вводятся с клавиатуры. Вывести новый массив. 2....

Массивы в javascript - неужели всё так банально?
Народ, неужели в javascript большинство нужных функций у массивов нет? Наример: для того чтобы узнать какое значение в массиве самое...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru