Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.01.2012, 13:21
Аватар для Mike_Kharkov
Кандидат Javascript-наук
Отправить личное сообщение для Mike_Kharkov Посмотреть профиль Найти все сообщения от Mike_Kharkov
 
Регистрация: 04.01.2012
Сообщений: 143

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 новичек! Поэтому прошу за код меня сильно не бить...
В заранее всем Очень Признателен за помощь!

Последний раз редактировалось Mike_Kharkov, 21.01.2012 в 14:47.
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2012, 14:08
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от 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>


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

Последний раз редактировалось monolithed, 21.01.2012 в 14:16.
Ответить с цитированием
  #3 (permalink)  
Старый 21.01.2012, 14:21
Аватар для Mike_Kharkov
Кандидат Javascript-наук
Отправить личное сообщение для Mike_Kharkov Посмотреть профиль Найти все сообщения от Mike_Kharkov
 
Регистрация: 04.01.2012
Сообщений: 143

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

Последний раз редактировалось monolithed, 21.01.2012 в 14:55.
Ответить с цитированием
  #4 (permalink)  
Старый 21.01.2012, 14:25
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

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

alert(["1" + 1, +"1" + 1, parseInt("1") + 1, parseFloat("0.1") + 1].join('\n'));
Ответить с цитированием
  #5 (permalink)  
Старый 21.01.2012, 14:44
Аватар для Mike_Kharkov
Кандидат Javascript-наук
Отправить личное сообщение для Mike_Kharkov Посмотреть профиль Найти все сообщения от Mike_Kharkov
 
Регистрация: 04.01.2012
Сообщений: 143

Сообщение от monolithed
alert(["1" + 1, +"1" + 1, parseInt("1") + 1, parseFloat("0.1") + 1].join('\n'));
На счет преобразования из строчных в числовые параметры я вроде бы понял...
Хотя не совсем ясно каким тогда образом срабатывает мое условие? Получается что я сравниваю строку с цифрой?
(Но тем не менее это срабатывает до тех мор пока я не подключаю обьект math.round(); После этого условие не срабатывает... Сейчас я изменил закоментированую строку - но если её задействовать то все равно ничего не работает.. )
P.S. Хотя возможно я что то не так понял...

Последний раз редактировалось Mike_Kharkov, 21.01.2012 в 14:59.
Ответить с цитированием
  #6 (permalink)  
Старый 21.01.2012, 15:02
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

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

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


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

Последний раз редактировалось monolithed, 21.01.2012 в 15:22.
Ответить с цитированием
  #7 (permalink)  
Старый 21.01.2012, 15:09
Аватар для Mike_Kharkov
Кандидат Javascript-наук
Отправить личное сообщение для Mike_Kharkov Посмотреть профиль Найти все сообщения от Mike_Kharkov
 
Регистрация: 04.01.2012
Сообщений: 143

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

Последний раз редактировалось Mike_Kharkov, 21.01.2012 в 15:11.
Ответить с цитированием
  #8 (permalink)  
Старый 21.01.2012, 15:26
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При клике ссылки, открыть DIV блок, и при клике ещё раз, закрыть его Simon Общие вопросы Javascript 59 28.05.2017 17:31
Изменение стиля родительского элемента при :hover дочернего lanzs Элементы интерфейса 2 16.10.2010 13:28
закрыти diva при клике вне его Hugo_O Элементы интерфейса 14 21.05.2010 14:39
Закрыть элемент при клике вне его masterm Общие вопросы Javascript 3 31.07.2009 11:27
Не срабатывает hover при использовании в div IE 6.0 AlexMak (X)HTML/CSS 5 14.05.2009 18:26