Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 11
1

Не работает функция с input type range

20.07.2018, 21:20. Показов 3887. Ответов 20

Author24 — интернет-сервис помощи студентам
Всем привет!
Помогите пжл разобраться почему не работает функция
  1. Необходимо чтобы от значения в range работало условие

Пример
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<form >
    <input type="range" min="20" max="40" step="1" class="slider" value="20" id="pr"  onchange="sumUpNewCar()">
    </form>
 
 <div class="mainbox6"> 
             
        <div class="overall"><b>ИТОГО:</b></div>
 
        <table class="tableOverall" >
 
            <tr>
                <td>Итого</td>
                <td id="sumNewVehicle"></td>
                <td id="sumPromoLoans"></td>
                <td id="sumStandartLoans"></td>
            </tr>
 
        </table>        
           
        </div>
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
function sumUpNewCar() {
 
  var promoLoan = document.getElementById("newAuto1").value;
  var standartLoan = document.getElementById("newAuto2").value;
  var promoPlusLoan = document.getElementById("newAuto3").value;
  var standartPlusLoan = document.getElementById("newAuto4").value;
  var penetrationLoan = document.getElementById("pr").value;
 
 
 
 
  var sumPromoLoans = document.getElementById("sumPromoLoans").innerHTML = (promoLoan * Number(0.004)) + (promoPlusLoan * Number(0.0004));
  var sumStandartLoans = document.getElementById("sumStandartLoans").innerHTML = (standartLoan * 0.07) + Math.round(standartPlusLoan * 0.028);
  var sumNewVehicle = document.getElementById("sumNewVehicle").innerHTML = sumPromoLoans + sumStandartLoans;
  var overallPromo = sumPromoLoans.value;
 
  /* doesn't work*/
 
  if (penetrationLoan > 24.99 && penetrationLoan < 35) {
    overallPromo *= 0.005;
 
  }
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.07.2018, 21:20
Ответы с готовыми решениями:

CSS в input type=range
Всем привет! Нашла такой стиль для &lt;input type=&quot;range&quot;&gt; Только вот проблема в том, что ползунок...

Стилизация в Хроме input type=range
После круглого бегунка нужно убрать синюю полоску http://azbuka12.ru/ &quot;Средняя толщина стяжки...

Стилизация ползунка input type=range
Здравствуйте! Подскажите, пожалуйста, возможно ли вообще при стилизации ползунка фоном вставить...

Input type range - добавление в список определенных значений
Всем доброго дня. Реализовал на проекте слайдеры калькулятора с помощью input. И всё было прекрасно...

20
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
20.07.2018, 21:31 2
sunucu, вы показали не весь HTML и JS код, относящийся к проблеме. И что наблюдаете в консоли?
0
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 11
20.07.2018, 22:39  [ТС] 3
Данные по HTML и JS ниже
консоль почему-то выдает следующее

"penetrationLoan is not defined"

HTML5
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
74
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>revenue calculator</title>
</head>
<style>
<body>
    <div class="head"><b>В </b></div>
 
    
    <!--BOX #1-->
   <div class="mainbox">
 
       <div class="newvehicle"><b>В</b></div>
        <form >
 
            <label class="showLabel1" for="newcar"><b></b></label>
            <input  type="number" min="1000" max="100000000" id="newAuto1" onchange="sumUpNewCar()"> 
            <span class="rub1"><b>РУБ</b></span>
            
            <label class="showLabel2"  for="newcar2"><b></b></label>
            <input  type="number" min="100000" max="100000000" id="newAuto2" onchange="sumUpNewCar()"> 
            <span class="rub2"><b>РУБ</b></span>
 
            <label class="showLabel3"  for="newcar3"><b> </b></label>
            <input  type="number" min="100000" max="100000000" id="newAuto3" onchange="sumUpNewCar()"> 
            <span class="rub3"><b>РУБ</b></span>
 
            
            <label class="showLabel4"  for="newcar4"><b> </b></label>
            <input  type="number" min="100000" max="100000000" id="newAuto4" onchange="sumUpNewCar()">
            <span class="rub4"><b>РУБ</b></span>
        
        </form>
 
    </div> 
 
    <!--BOX #2-->
    <div class="mainbox2">
 
    <div class="newvehicle2"><b></b></div>
 
    <input type="range" min="20" max="40" step="1" class="slider" value="20" id="pr" onchange="sumUpNewCar">
        <div  class="showPr"><b>:</b><span class="showPr2" id="showPr"></span> </div>
 
        <span class="rangeTwentyFive"><b>25%</b></span>
        <span class="rangeThirty"><b>30%</b></span>
        <span class="rangeThirtyFive"><b>35%</b></span>
        
         <!--BOX#6-->
 
         <div class="mainbox6"> 
             
        <div class="overall"><b>ИТОГО:</b></div>
 
        <table class="tableOverall" >
 
            <tr>
                <td> авто</td>
                <td id="sumNewVehicle"></td>
                <td id="sumPromoLoans"></td>
                <td id="sumStandartLoans"></td>
            </tr>
 
        </table>        
           
        </div> 
  
</div>
 
</body>
</html>

Javascript
1
2
3
4
5
6
7
8
9
        <script>
            var slider = document.getElementById("pr");
            var output = document.getElementById("showPr");
            output.innerHTML = slider.value;
        
            slider.oninput = function() {
                output.innerHTML = this.value + "%";
            }
            </script>

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
<script>
 
            function sumUpNewCar(){
                /* works*/
                var promoLoan = document.getElementById("newAuto1").value;
                var standartLoan = document.getElementById("newAuto2").value;
                var promoPlusLoan = document.getElementById("newAuto3").value;
                var standartPlusLoan = document.getElementById("newAuto4").value;
                var penetrationLoan = document.getElementById("pr").value;
               
                    
                /* works*/
                var sumPromoLoans = document.getElementById("sumPromoLoans").innerHTML = (promoLoan * Number (0.0009)) + (promoPlusLoan * Number (0.0009));
                var sumStandartLoans = document.getElementById("sumStandartLoans").innerHTML =(standartLoan * 0.0009) + Math.round (standartPlusLoan * 0.0009);
                var sumNewVehicle = document.getElementById("sumNewVehicle").innerHTML = sumPromoLoans + sumStandartLoans;
                
                
                
 /* doesn't work*/
                if(penetrationLoan > 24.99 && penetrationLoan < 35 ){
                    Math.round (sumPromoLoans * 0.009);
                
                }
                    
 
                }
            
                /*
                else if(penetrationLoan >= 35){
                    sumPromoLoans * Number(0.01111);
                    sumStandartLoans * Number(0.02222);
                }
                else if(penetrationLoan >=25 <=29.99){
                    sumStandartLoans * Number(0.02221);
                 }
                 else if(penetrationLoan >=30 <=34.99){
                    sumStandartLoans * Number(0.012225);
                 } else {
                    sumNewVehicle * Number(1);
                 }
 
                }
                */
 
 
        
        </script>
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
20.07.2018, 23:49 4
sunucu, как минимум, весь JS-код, вам нужно поместить в конце страницы. И исправьте на 45-ой строке onchange="sumUpNewCar()"
0
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 11
21.07.2018, 09:53  [ТС] 5
JS находится в конце страницы.

поменял на
Javascript
1
onchange="sumUpNewCar()"
, но все равно без изменений.
Сумма не умножается на коэффициент.
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
21.07.2018, 10:07 6
Цитата Сообщение от sunucu Посмотреть сообщение
Сумма не умножается на коэффициент.
Расчеты вы делаете, но я что-то не вижу, что результат вы присваиваете какой-нибудь переменной.

Добавлено через 1 минуту
Вот эта часть кода:
Javascript
1
2
3
if(penetrationLoan > 24.99 && penetrationLoan < 35 ){
    Math.round (sumPromoLoans * 0.009); // результат остается "в воздухе"
}
1
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 11
21.07.2018, 20:56  [ТС] 7
Спасибо, получилось следующим образом:

Javascript
1
2
if(penetrationLoan > 24.99 && penetrationLoan < 35 ){
  document.getElementById("sumNewVehicle").innerHTML = Math.round(sumPromoLoans * 0.005) + sumNewVehicle;
Добавлено через 3 часа 20 минут
Только теперь , к сожалению не считает данные в третьем утверждении else if с комментарием doesn't work и с другой переменной

Javascript
1
2
3
4
5
6
7
8
9
 if(penetrationLoan > 24.99 && penetrationLoan < 35 ){
                    document.getElementById("sumNewVehicle").innerHTML = Math.round(sumPromoLoans * 0.005) + sumNewVehicle;
                }
                else if(penetrationLoan >= 35){
                    document.getElementById("sumNewVehicle").innerHTML = Math.round(sumPromoLoans * 0.000001) + sumNewVehicle;
                }
                /* doesn't work*/
               else if( penetrationLoan > 24.99 && penetrationLoan < 29.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round(sumStandartLoans * 0.0008) + sumNewVehicle;
0
3325 / 2845 / 1423
Регистрация: 15.01.2014
Сообщений: 6,170
21.07.2018, 21:48 8
Цитата Сообщение от sunucu Посмотреть сообщение
не считает данные
Пересмотрите логику сценария. Кроме вас, это никто не сделает.
0
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 11
25.07.2018, 17:04  [ТС] 9
Сейчас возникает дополнительная трудность по двум другим утверждениям по которым не производится расчет
До сих пор думаю и ищу пути решения

комменты в скрипте `doesn't work`

HTML5
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
<!--BOX #1-->
 
 
   <div class="mainbox">
 
        <form >
 
           
            <input class="promo" type="number" min="1000" max="100000000" id="newAuto1" onchange="sumUpNewCar()"> 
         
            
            
            <input class="standart" type="number" min="100000" max="100000000" id="newAuto2" onchange="sumUpNewCar()"> 
          
 
            <input class="promoPlus" type="number" min="100000" max="100000000" id="newAuto3" onchange="sumUpNewCar()"> 
         
            
            
            <input class="standartPlus" type="number" min="100000" max="100000000" id="newAuto4" onchange="sumUpNewCar()">
            
        
        </form>
 
    </div> 
    
    
<!--BOX #2-->
 
    <div class="mainbox2">
 
    
 
    <input type="range" min="20" max="40" step="1" class="slider" value="20" id="pr" onchange="sumUpNewCar()">
        
 
 
        <script>
            var slider = document.getElementById("pr");
            var output = document.getElementById("showPr");
            output.innerHTML = slider.value;
        
            slider.oninput = function() {
                output.innerHTML = this.value + "%";
            }
            </script>
 
    </div> 
    
    
      <!--BOX#6-->
 
         <div class="mainbox6"> 
             
        <div class="overall"><b>Overall:</b></div>
 
        <table class="tableOverall" >
 
            <tr>
                
                <td id="sumNewVehicle"></td>
                <td id="sumPromoLoans"></td>
                <td id="sumStandartLoans"></td>
            </tr>
 
           
 
        </table>        
           
        </div>


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
<script>
 
            function sumUpNewCar(){
                
                var promoLoan = document.getElementById("newAuto1").value;
                var standartLoan = document.getElementById("newAuto2").value;
                var promoPlusLoan = document.getElementById("newAuto3").value;
                var standartPlusLoan = document.getElementById("newAuto4").value;
                var penetrationLoan = document.getElementById("pr").value;
                var sprCompleted = document.getElementById("sprCompleted");
                var sprDoesntCompleted = document.getElementById("sprDoesntCompleted");
                var qualityCompleted = document.getElementById("qualityCompleted");
                var qualityDoesntCompleted = document.getElementById("qualityDoesntCompleted");
  
 
                    
                /
                var sumPromoLoans = document.getElementById("sumPromoLoans").innerHTML = (promoLoan * Number (5e-3)) + (promoPlusLoan * Number (2e-2));
                var sumStandartLoans = document.getElementById("sumStandartLoans").innerHTML =(standartLoan * Number (2e-2)) + Math.round (standartPlusLoan * Number (35e-3));
                var sumNewVehicle = Number (document.getElementById("sumNewVehicle").innerHTML);
            
                
                if(penetrationLoan > 24.99 && penetrationLoan < 35 ){
                    document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumPromoLoans * 0.00001) + Number (sumPromoLoans));
                }
                else if(penetrationLoan >= 35) {
                    document.getElementById("sumNewVehicle").innerHTML = Math.round (((sumPromoLoans * 0.000001) ) + Number (sumPromoLoans)) + (sumStandartLoans * 0.0.00001) ) + Number (sumStandartLoans));
                }
                /* doesn't work*/
               else if( penetrationLoan > 24.99 && penetrationLoan <= 29.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumStandartLoans * 0.0000001) ) + Number (sumStandartLoans)) + Number (sumNewVehicle);
               }
               /* doesn't work*/
               else if(penetrationLoan >= 30 && penetrationLoan <= 34.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumStandartLoans * 0.0000001) ) + Number (sumStandartLoans)) + Number (sumNewVehicle);
               }
               else {
                document.getElementById("sumNewVehicle").innerHTML = Math.round ( Number (sumPromoLoans) + Number (sumStandartLoans));
               }
 
                }
            
</script>
0
Модератор
Эксперт HTML/CSS
2277 / 1657 / 651
Регистрация: 07.08.2016
Сообщений: 3,972
25.07.2018, 17:22 10
Они и не будут работать,так как срабатывает if(penetrationLoan > 24.99 && penetrationLoan < 35
0
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 11
25.07.2018, 17:24  [ТС] 11
Из этого выходит, что надо создавать дополнительную функцию?
0
Модератор
Эксперт HTML/CSS
2277 / 1657 / 651
Регистрация: 07.08.2016
Сообщений: 3,972
25.07.2018, 17:50 12
sunucu, уберите вообще проверку (penetrationLoan > 24.99 && penetrationLoan < 35 ) по логике она у вас лишняя
0
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 11
25.07.2018, 21:30  [ТС] 13
AlexZaw,
У меня есть два условия с разным диапазоном ранжирования.
Получилось немного облегчить, когда добавил вторую функцию.
Но теперь не работает следующее утверждение в первой функции

Javascript
1
2
3
else if(penetrationLoan >= 35) {
                    document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumPromoLoans * 0.0001) + Number (sumPromoLoans));
                }
Общая картина сейчас:
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
function sumUpNewCar(){
                
                var promoLoan = document.getElementById("newAuto1").value;
                var standartLoan = document.getElementById("newAuto2").value;
                var promoPlusLoan = document.getElementById("newAuto3").value;
                var standartPlusLoan = document.getElementById("newAuto4").value;
                var penetrationLoan = document.getElementById("pr").value;
                var sprCompleted = document.getElementById("sprCompleted");
                var sprDoesntCompleted = document.getElementById("sprDoesntCompleted");
                var qualityCompleted = document.getElementById("qualityCompleted");
                var qualityDoesntCompleted = document.getElementById("qualityDoesntCompleted");
  
 
                    
               
                var sumPromoLoans = document.getElementById("sumPromoLoans").innerHTML = (promoLoan * Number (5e-3)) + (promoPlusLoan * Number (2e-2));
                var sumStandartLoans = document.getElementById("sumStandartLoans").innerHTML =(standartLoan * Number (2e-2)) + Math.round (standartPlusLoan * Number (35e-3));
                var sumNewVehicle = Number (document.getElementById("sumNewVehicle").innerHTML);
            
                
                if(penetrationLoan > 24.99 && penetrationLoan < 35 ){
                    document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumPromoLoans * 0.001) + Number (sumPromoLoans));
                }
                /* doesn't work*/
               else if(penetrationLoan >= 35) {
                    document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumPromoLoans * 0.0001) + Number (sumPromoLoans)) + Number (sumNewVehicle);
                }
                  else {
                document.getElementById("sumNewVehicle").innerHTML = Math.round ( Number (sumPromoLoans) + Number (sumStandartLoans));
               }
 
                }
   
            function sumUpNewCar2() {
                var promoLoan = document.getElementById("newAuto1").value;
                var standartLoan = document.getElementById("newAuto2").value;
                var promoPlusLoan = document.getElementById("newAuto3").value;
                var standartPlusLoan = document.getElementById("newAuto4").value;
                var penetrationLoan = document.getElementById("pr").value;
                var sprCompleted = document.getElementById("sprCompleted");
                var sprDoesntCompleted = document.getElementById("sprDoesntCompleted");
                var qualityCompleted = document.getElementById("qualityCompleted");
                var qualityDoesntCompleted = document.getElementById("qualityDoesntCompleted");
 
                var sumPromoLoans = document.getElementById("sumPromoLoans").innerHTML = (promoLoan * Number (5e-3)) + (promoPlusLoan * Number (2e-2));
                var sumStandartLoans = document.getElementById("sumStandartLoans").innerHTML =(standartLoan * Number (2e-2)) + Math.round (standartPlusLoan * Number (35e-3));
                var sumNewVehicle = Number (document.getElementById("sumNewVehicle").innerHTML);
 
 
                if( penetrationLoan > 24.99 && penetrationLoan <= 29.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumStandartLoans * 0.00001) + Number (sumStandartLoans)) + Number (sumNewVehicle);
               }
        
               else if(penetrationLoan >= 30 && penetrationLoan <= 34.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumStandartLoans * 0.0111111) + Number (sumStandartLoans)) + Number (sumNewVehicle);
               }
 
                else if(penetrationLoan >= 35) {
                    document.getElementById("sumNewVehicle").innerHTML = Math.round  ((sumStandartLoans * 0.011111) + Number (sumStandartLoans));
                }
 
                else {
                document.getElementById("sumNewVehicle").innerHTML = Math.round ( Number (sumPromoLoans) + Number (sumStandartLoans));
                
               }
            }
0
Модератор
Эксперт HTML/CSS
2277 / 1657 / 651
Регистрация: 07.08.2016
Сообщений: 3,972
25.07.2018, 22:51 14
Цитата Сообщение от sunucu Посмотреть сообщение
У меня есть два условия с разным диапазоном ранжирования.
У вас в первой функции если 24.99 < penetrationLoan < 35 в sumNewVehicle записывается одно значение, и тут же переписывается значением из втрой функции. В чем великий смысл сего таинства, если все условия у вас проверяются во второй функции?

Цитата Сообщение от sunucu Посмотреть сообщение
Но теперь не работает следующее утверждение в первой функции
Вообще сам по себе код должен быть рабочий. Можете то что сейчас у вас получилось выложить в песочницу, чтобы уже на живом примере разбираться, а не в вакууме.
0
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 11
26.07.2018, 11:55  [ТС] 15
AlexZaw,

У вас в первой функции если 24.99 < penetrationLoan < 35 в sumNewVehicle записывается одно значение, и тут же переписывается значением из второй функции. В чем великий смысл сего таинства, если все условия у вас проверяются во второй функции?
Смысл в том , что есть четыре разных бокса, куда вводятся определенные суммы. В зависимости от уровня % применяется определенный множитель

Вообще сам по себе код должен быть рабочий. Можете то что сейчас у вас получилось выложить в песочницу, чтобы уже на живом примере разбираться, а не в вакууме.
https://codepen.io/danielnuevo/pen/JByMRp
0
Модератор
Эксперт HTML/CSS
2277 / 1657 / 651
Регистрация: 07.08.2016
Сообщений: 3,972
26.07.2018, 14:14 16
Цитата Сообщение от sunucu Посмотреть сообщение
Смысл в том , что есть четыре разных бокса, куда вводятся определенные суммы
Все равно это можно сделать в одной функции.

Разбираться в логике вашего калькулятора мне лень, но вот это должно работать:
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
function sumUpNewCar(){
                
                var promoLoan = document.getElementById("newAuto1").value;
                var standartLoan = document.getElementById("newAuto2").value;
                var promoPlusLoan = document.getElementById("newAuto3").value;
                var standartPlusLoan = document.getElementById("newAuto4").value;
                var penetrationLoan = document.getElementById("pr").value;
                var sumPromoLoans = document.getElementById("sumPromoLoans").innerHTML = (promoLoan * Number (0.005)) + (promoPlusLoan * Number (0.0004));
                var sumStandartLoans = document.getElementById("sumStandartLoans").innerHTML =(standartLoan * Number (0.0003)) + Math.round (standartPlusLoan * Number (0.0002));
                var sumNewVehicle = Number (document.getElementById("sumNewVehicle").innerHTML);
            
                
                if(penetrationLoan > 24.99 && penetrationLoan < 35 ){
                    document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumPromoLoans * 0.00001) + Number (sumPromoLoans));
                }
                else if(penetrationLoan >= 35) {
                    document.getElementById("sumNewVehicle").innerHTML = Math.round
                     (((sumPromoLoans * 0.000002) ) + Number (sumPromoLoans)) + (sumStandartLoans * 0.000003)  + Number (sumStandartLoans);
                }
                /* doesn't work*/
               else if( penetrationLoan > 24.99 && penetrationLoan <= 29.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumStandartLoans * 0.0000002) ) + Number (sumStandartLoans) + Number (sumNewVehicle);
               }
               /* doesn't work*/
               else if(penetrationLoan >= 30 && penetrationLoan <= 34.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumStandartLoans * 0.0000002) ) + Number (sumStandartLoans) + Number (sumNewVehicle);
               }
               else {
                document.getElementById("sumNewVehicle").innerHTML = Math.round ( Number (sumPromoLoans) + Number (sumStandartLoans));
               }
 
                }
            
 
 function sumUpNewCar2() {
                var promoLoan = document.getElementById("newAuto1").value;
                var standartLoan = document.getElementById("newAuto2").value;
                var promoPlusLoan = document.getElementById("newAuto3").value;
                var standartPlusLoan = document.getElementById("newAuto4").value;
                var penetrationLoan = document.getElementById("pr").value;
              
 
                var sumPromoLoans = document.getElementById("sumPromoLoans").innerHTML = (promoLoan * Number (0.000002)) + (promoPlusLoan * Number (0.000002));
                var sumStandartLoans = document.getElementById("sumStandartLoans").innerHTML =(standartLoan * Number (0.000002)) + Math.round (standartPlusLoan * Number (0.000002));
                var sumNewVehicle = Number (document.getElementById("sumNewVehicle").innerHTML);
 
 
                if( penetrationLoan > 24.99 && penetrationLoan <= 29.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumStandartLoans * 0.0221) + Number (sumStandartLoans)) + Number (sumNewVehicle);
               }
        
               else if(penetrationLoan >= 30 && penetrationLoan <= 34.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumStandartLoans * 0.2222) + Number (sumStandartLoans)) + Number (sumNewVehicle);
               }
 
                else if(penetrationLoan >= 35) {
                    document.getElementById("sumNewVehicle").innerHTML = Math.round  ((sumStandartLoans * 0.022222) + Number (sumStandartLoans));
                }
 
                else {
                document.getElementById("sumNewVehicle").innerHTML = Math.round ( Number (sumPromoLoans) + Number (sumStandartLoans));
                
               }
            }
На будущее - поставьте себе нормальный редактор кода, такой, который вам будет подсвечивать ошибки синтаксиса. Например в вашем коде очень много лишних закрывающих скобок, откуда то затесался лишний слеш и даже есть число 0.0.00003

Добавлено через 58 минут
Кстати объясните мне вот этот кусок кода:
Javascript
1
2
if(penetrationLoan > 24.99 && penetrationLoan < 35 )
else if( penetrationLoan > 24.99 && penetrationLoan <= 29.99)
Если penetrationLoan == 26, какое из условий, по вашей логике, должно сработать?
Если первое, то зачем в коде второе? И наоборот.
Пока вы не разберетесь с тем, что и при каких условиях у вас должно срабатывать, вы так и будете писать лишние функции и проверки
0
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 11
26.07.2018, 14:31  [ТС] 17
AlexZaw,

Если penetrationLoan == 26, какое из условий, по вашей логике, должно сработать?
Должны срабатывать оба условия с переменными sumPromoLoans и sumStandartLoans , т.е. их множимое умножается на свой индивидуальный множитель.
В sumPromoLoans их два, а в sumStandartLoans три.

Пока вы не разберетесь с тем, что и при каких условиях у вас должно срабатывать, вы так и будете писать лишние функции и проверки
Согласен. Но изначально я прописал всю логику на бумаге. Понимаю, что можно сделать одной функцией и я ее прописал.
Но вот эта часть , к сожалению не срабатывает /* doesn't work*/.
Хотя, логика проверки и утверждения прописаны верно.


Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if(penetrationLoan > 24.99 && penetrationLoan < 35 ){
                    document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumPromoLoans * 0.00001) + Number (sumPromoLoans));
                }
                else if(penetrationLoan >= 35) {
                    document.getElementById("sumNewVehicle").innerHTML = Math.round
                     (((sumPromoLoans * 0.000002) ) + Number (sumPromoLoans)) + (sumStandartLoans * 0.000003)  + Number (sumStandartLoans);
                }
                /* doesn't work*/
               else if( penetrationLoan > 24.99 && penetrationLoan <= 29.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumStandartLoans * 0.0000002) ) + Number (sumStandartLoans) + Number (sumNewVehicle);
               }
               /* doesn't work*/
               else if(penetrationLoan >= 30 && penetrationLoan <= 34.99) {
                   document.getElementById("sumNewVehicle").innerHTML = Math.round ((sumStandartLoans * 0.0000002) ) + Number (sumStandartLoans) + Number (sumNewVehicle);
0
Модератор
Эксперт HTML/CSS
2277 / 1657 / 651
Регистрация: 07.08.2016
Сообщений: 3,972
26.07.2018, 14:39 18
Цитата Сообщение от sunucu Посмотреть сообщение
логика проверки и утверждения прописаны верно.
Неверно они прописаны, if это вам не switch-case если одна из проверок в if прошла успешно, то дальше проверки не выполняются!
Цитата Сообщение от sunucu Посмотреть сообщение
Должны срабатывать оба условия
Хорошо, можно переписать код так чтобы срабатывали оба условия, вот только результат в sumNewVehicle
ВСЕГДА будет такой, какой будет высчитан в условии которое находится в коде ниже(если быть точнее, то не ниже, а то которое выполнится позже)! Я понимаю если бы вы выводили результат в разные места, но при выводе в одно и тоже место это бессмыслица.
1
0 / 0 / 0
Регистрация: 20.07.2018
Сообщений: 11
28.07.2018, 22:07  [ТС] 19
AlexZaw,

спасибо, попробую сделать это через switch
0
Модератор
Эксперт HTML/CSS
2277 / 1657 / 651
Регистрация: 07.08.2016
Сообщений: 3,972
28.07.2018, 23:30 20
Цитата Сообщение от sunucu Посмотреть сообщение
попробую сделать это через switch
Если поизвращаться то возможно и получится, проще через if все-таки, вот только смысл? Как я вам уже объяснял результат все равно будет выводится из последнего выполненного условия.
Если я правильно понимаю, вам нужно в условиях (penetrationLoan > 24.99 && penetrationLoan < 35 )
и ( penetrationLoan > 24.99 && penetrationLoan <= 29.99) заново получать чило которое находится в поле sumNewVehicle
0
28.07.2018, 23:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.07.2018, 23:30
Помогаю со студенческими работами здесь

При изменении ползунка (input type=range), в окне оповещения показать его значение
я являюсь новичком в программировании на JS, поэтому у меня возникло несколько вопросов. Я хочу,...

Проблема с формой (<form action=1.php method=post> <input type=text name='first'> <input type=submit value=ok>)
Я пишу: &lt;form action=1.php method=post&gt; &lt;input type=text name='first'&gt; &lt;input type=submit...

Привязка блока к бегунку input[type="range"]
Товарищи, такой вопрос. Есть &lt;input type=&quot;range&quot;&gt;. На нем есть бегунок. Под инпутом есть блок с...

Если задать атрибуты для input[type="range"] программно, то по клику значение увеличивается на 2.
Столкнулся с проблемой, &lt;input type=&quot;range&quot;&gt; при загрузке страницы имеет в атрибутах &lt;input...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru