09.08.2017, 15:43
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
Сообщение от ksa
|
Так он же напрашивается!
|
Конкретно для этой задачи цикл вовсе не обязателен, я так считаю.
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);
});
Последний раз редактировалось Nexus, 09.08.2017 в 15:46.
|
|
09.08.2017, 15:47
|
|
Профессор
|
|
Регистрация: 01.12.2016
Сообщений: 3,650
|
|
<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, 09.08.2017 в 16:05.
Причина: .toFixed(0)
|
|
09.08.2017, 15:54
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Nexus
|
Конкретно для этой задачи цикл вовсе не обязателен, я так считаю.
|
Дело твое...
|
|
09.08.2017, 15:56
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от j0hnik
|
k = [1.5, 1.3, 1, 0.8], r = [0, 2000, 5000, 30000];
|
Массив объектов был бы более гармоничен...
|
|
09.08.2017, 15:57
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
После кода j0hnik я понял, что у меня в коде в объекте «data» не хватает свойства «0» со значением 2.
А у j0hnik в коде я бы переменную «i» объявил самой последней и значение ей установил бы как «k.length». + условие немного некорректное, у автора сравнение идет «больше или равно», а не строго «больше». Также отсутствует проверка на корректность введенных данных, к примеру если ввести отрицательное число, то...
|
|
09.08.2017, 15:58
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Nexus
|
var data={
2000:1.5,
5000:1.3,
30000:1
}
|
Это опасная практика.
"Изготовитель" не гарантирует "правильность" сортировки ключей в объекте. Для правильного 100%-ного порядка следования нужно использовать массив.
|
|
09.08.2017, 15:59
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
Сообщение от ksa
|
Дело твое...
|
На самом деле это дело автора)
|
|
09.08.2017, 16:01
|
Профессор
|
|
Регистрация: 04.12.2012
Сообщений: 3,795
|
|
|
|
09.08.2017, 16:02
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Nexus
|
цикл не разрывается на первом фейле
|
Зачем делать лишние итерации?
|
|
09.08.2017, 16:04
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Nexus
|
На самом деле это дело автора)
|
Тогда уже его "работодателя"...
Т.к. не каждого устроит индусский код
|
|
|
|