Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Math.round(); (при его активации не срабатывает условие...) (https://javascript.ru/forum/misc/24989-math-round-%3B-pri-ego-aktivacii-ne-srabatyvaet-uslovie.html)

Mike_Kharkov 21.01.2012 13:21

Math.round(); (при его активации не срабатывает условие...)
 
Здравствуйте!
Есть такой код:
function z (param1,param2,param3){
	
	   if (param1< 1001 && param1 > 0) {
		         var forTime = new Date();
		         var test = forTime.getTime() / (1000*60*60*24) + parseInt(param1);
			     var WeekDays = new Date(Math.round(test)*(24*60*60*1000));
			     //param1 = parseInt(Math.round(param1));
			     if (param1[param1.length-2] == 1 && param1> 99) {
			     	param1 = param1+" дней ";
			     }
			     else if (param1[param1.length-1] == 1) {
			     	param1 = param1+" день ";
			     }
			     else if (param1[param1.length-1] == 2 || param1[param1.length-1] == 3 || param1[param1.length-1] == 4) {
			     	param1 = param1+" дня ";
			     }
			     else{
			     	param1 = param1+" дней ";
			     }
			     alert("Через "+param1+"будет вот такая дата: "+"\n"+
		         "День недели: " + param2[WeekDays.getDay()]+"\n"+
		         "Число: " + WeekDays.getDate()+"-е"+"\n"+
		         "Месяц: " +param3[WeekDays.getMonth()]+"\n"+
		         "Год: " + WeekDays.getFullYear()+"-й"+"\n");
     }
     else{
     	alert("Ваши данные не соответствуют критериям ввода!"+"\n");
     }
}


var answer = prompt("Введите число для определения будущей даты! \n (От 0 до 1000-чи...) ","Это будет: ")

var dayWeek = [" Воскресенье"," Понедельник"," Вторник"," Среда"," Четверг"," Пятница"," Суббота"];

var month = [" Январь"," Февраль"," Март"," Апрель"," Май"," Июнь"," Июль"," Август"," Сентябрь"," Октябрь"," Ноябрь"," Декабрь"]

z(answer,dayWeek,month);



Следующая строчка закоментирована поскольку при её активации не срабатывает условие связанное с изменением слова "день"!?
//param1 = Math.round(param1);
Вопрос:
Как округлить полученные при вводе данные до целых чисел, с учетом если пользователь введёт дробные?
(и что бы при этом окончания у слов "день" подвергались склонениям, как и ранее...)
P.S. В JS новичек! Поэтому прошу за код меня сильно не бить...
В заранее всем Очень Признателен за помощь!

monolithed 21.01.2012 14:08

Цитата:

Сообщение от Mike_Kharkov
Как округлить полученные при вводе данные до целых чисел, с учетом если пользователь введёт дробные?

<input type="text" id="text" value="0.9" />
<input type="button" id="button" value="click" /> 

<script>
document.getElementById('button').onclick = function() {
     alert(Math.round(document.getElementById('text').value));
};
</script>


Логический оператор И имеет эквивалент &&, а не &.
Если вам нужно произвести арифметические операции со значением из поля ввода, то сперва значение нужно привести к целому типу, для этого достаточно добавить унарный + перед значением.

Mike_Kharkov 21.01.2012 14:21

Цитата:

Сообщение от monolithed
Логический оператор И имеет эквивалент &&, а не &.
Если вам нужно произвести арифметические операции со значением из поля ввода, то сперва значение нужно привести к целому типу, для этого достаточно добавить унарный + перед значением.

Cпасибо за совет и за то что исправили(&)! Буду разбираться c унарными значениями...

monolithed 21.01.2012 14:25

Цитата:

Сообщение от Mike_Kharkov
Буду разбираться c унарными значениями...

Унарными операторами, а не значениями.

alert(["1" + 1, +"1" + 1, parseInt("1") + 1, parseFloat("0.1") + 1].join('\n'));

Mike_Kharkov 21.01.2012 14:44

Цитата:

Сообщение от monolithed
alert(["1" + 1, +"1" + 1, parseInt("1") + 1, parseFloat("0.1") + 1].join('\n'));

На счет преобразования из строчных в числовые параметры я вроде бы понял...
Хотя не совсем ясно каким тогда образом срабатывает мое условие? Получается что я сравниваю строку с цифрой?
(Но тем не менее это срабатывает до тех мор пока я не подключаю обьект math.round(); После этого условие не срабатывает... Сейчас я изменил закоментированую строку - но если её задействовать то все равно ничего не работает.. )
P.S. Хотя возможно я что то не так понял...

monolithed 21.01.2012 15:02

Цитата:

Сообщение от Mike_Kharkov
все равно ничего не работает.

Потому что вы написали полную чушь, зачем брать несуществующее свойство у строки/числа?!

var i = '10';
alert((i[i.length-2] == 1);


Чего вы хотите достичь этим условием?
param1[param1.length-2] == 1 && param1> 99

Mike_Kharkov 21.01.2012 15:09

Огромное Спасибо! Теперь понял в чем моя ошибка...
Этим условием хотел достич того, что бы при цифре 111 было склонение: "Дней" вместо "День"!

monolithed 21.01.2012 15:26

Перед тем как создавать тему пользуйтесь поиском, потому что ваша проблема не уникальна
А также прочтите о Plural Forms


Часовой пояс GMT +3, время: 17:31.