Цитата:
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, время: 03:18. |