Цитата:
biben, у тебя в коде логическая ошибка связанная с переменной «а», найди её. Решение твоей задачи с циклом: // [url]https://jsfiddle.net/sza10bke/[/url] $(function(){ function count(){ var data={ 2000:1.5, 5000:1.3, 30000:1 }, sum=+$("#count_inp").val() || 0, result=false; for(var val in data){ if(data.hasOwnProperty(val) && sum>=val) result=data[val]*sum; }; $("#result p").html(result===false?'Укажите расстояние':result+' Рублей'); }; var s=$("#process_all_b"); s.click(count); }); |
<htm> <head> </head> <body> <div id="calc_div"> <div id="quantity_div"><p class="c"> Сколько километров <br> <input type="text" id="count_inp" value="0"><br> </div> <div id="final_div"> <p class="c"><button id="process_all_b" >Посчитать</button><br></p> <div id="result"><p class="c">Укажите расстояние</p></div> </div> </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <script> $(function() { $("#process_all_b").click(function(){ var sum = $("#count_inp").val(), k = [1.5, 1.3, 1, 0.8], r = [0, 2000, 5000, 30000], i = k.length ; while(i--) if (sum >= r[i]) { sum *= k[i]; break; } $("#result p").html(sum.toFixed(0)+' Рублей'); }); }); </script> </body> </html> |
Цитата:
|
Цитата:
|
После кода j0hnik я понял, что у меня в коде в объекте «data» не хватает свойства «0» со значением 2.
А у j0hnik в коде я бы переменную «i» объявил самой последней и значение ей установил бы как «k.length». + условие немного некорректное, у автора сравнение идет «больше или равно», а не строго «больше». Также отсутствует проверка на корректность введенных данных, к примеру если ввести отрицательное число, то... |
Цитата:
"Изготовитель" не гарантирует "правильность" сортировки ключей в объекте. Для правильного 100%-ного порядка следования нужно использовать массив. ;) |
Цитата:
|
Цитата:
UPD. Затупил, ошибка возможна :) |
Цитата:
|
Цитата:
Т.к. не каждого устроит индусский код |
Часовой пояс GMT +3, время: 06:49. |