Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа скрипта в opera,mozilla 
V
    Опции темы
kamat0z
Дата 28.10.2006, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 24.10.2006

Репутация: нет
Всего: нет



Подскажите пожалуйста, что нужно исправить в скрипте, чтобы он работал не только в IE

Цитата

<script LANGUAGE="JavaScript"> 
<!---
var digital=new Date()  
var day=digital.getDate() 
var month=digital.getMonth()+1 
var year=digital.getYear() 

if (year==2006){ 
 if(month==10){ 
  if((day >= 23) && (day <=29)){ 
  document.write("9-ая неделя") } 
  if((day >= 30) && (day <=31)){ 
  document.write("10-ая неделя") }
 }
 if(month==11){
  if((day >= 1) && (day <= 5)){
  document.write("10-ая неделя") }
  if((day >= 6) && (day <= 12)){
  document.write("11-ая неделя") }
  if((day >= 13) && (day <= 19)){
  document.write("12-ая неделя") }
  if((day >= 20) && (day <= 26)){
  document.write("13-ая неделя") }
  if((day >= 27) && (day <= 30)){
  document.write("14-ая неделя") }
 }
 if(month==12){
  if((day >= 1) && (day <= 3)){
  document.write("14-ая неделя") }
  if((day >= 4) && (day <= 10)){
  document.write("15-ая неделя") }
  if((day >= 11) && (day <= 17)){
  document.write("16-ая неделя") }
  if((day >= 18) && (day <= 24)){
  document.write("17-ая неделя") }
  if((day >= 25) && (day <= 31)){
  document.write("18-ая неделя") }
 }
}

//-->
</SCRIPT>

PM MAIL   Вверх
SelenIT
Дата 28.10.2006, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



kamat0z, мда... и до какого времени этот календарь рассчитан? ;)
Проблемы в указанных браузерах возникли из-за устаревшего метода getYear - там он возвращает не 4 цифры, и потому условие не выполняется. Есть метод getFullYear, который всегда возвращает 4 цифры. Но неужели трудно посчитать номер текущей учебной недели как-нибудь так?
Код

var now   = new Date()
// 1 сентября было в этом календарном году или в прошлом?
var year0 = (now.getMonth() < 8) ? now.getFullYear() - 1: now.getFullYear();
var start = new Date(year0,8,1) // дата 1 сентября
start -= (start.getDay()*86400000) // начало недели, на кот. выпало 1 сентября
var numOfWeek = Math.ceil((now-start)/86400000/7) // номер текущей недели
document.write(numOfWeek + "-я неделя")



--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
kamat0z
Дата 9.11.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 24.10.2006

Репутация: нет
Всего: нет



SelenIT, спасиба  smile 
С годами я разобрался smile
1 сентября в этом году.
Это учебные недели.
Дело в том, что с какого-то числа в феврале опять начинается с первой недели. 
Фактически скрипт должен делится на две одинаковых части, в которых разница лишь в дате начала отсчета.

Просто, как то еще не очень понятно все это  smile 
PM MAIL   Вверх
12345c
Дата 9.11.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Круглый
****


Профиль
Группа: Vingrad developer
Сообщений: 2018
Регистрация: 26.12.2005
Где: наша не пропадала ?

Репутация: 57
Всего: 101



...М-м-м, у Вас проблемы с арифметикой или алгеброй? Спросите помощи преподавателя. Но при чём тут JS?
PM WWW   Вверх
SelenIT
Дата 9.11.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


баг форума
****


Профиль
Группа: Завсегдатай
Сообщений: 3996
Регистрация: 17.10.2006
Где: Pale Blue Dot

Репутация: 49
Всего: 401



kamat0z, 
Цитата(kamat0z @  9.11.2006,  13:54 Найти цитируемый пост)
скрипт должен делится на две одинаковых части, в которых разница лишь в дате начала отсчета

Вот такого быть как раз не должно при грамотном проектировании, похожие функции должен выполнять один код с разными параметрами.

Например, в нашем случае (можно сделать еще оптимальнее, но некогда):
Код

function countWeek() {
   // массив дат "начал отсчета" в формате [месяц, день], в возрастющем порядке
   var stops = [ [14,2], [1,9] ];
   var now = new Date(), year = now.getFullYear(), start, tmp;
   start = tmp = new Date(year-1, stops[stops.length-1][1]-1, stops[stops.length-1][0]);
   for (var i=0; i < stops.length; i++) { 
      tmp = new Date(year, stops[i][1]-1, stops[i][0]);
      if (tmp <= now) start = tmp;
   }
   start -= start.getDay()*86400000;
   return Math.ceil((now-start)/86400000/7);
}

document.write(countWeek() + "-я неделя")


И неважно, сколько раз в году "обнуляется" отсчет недель - 1, 2 или 15. Все, что нужно - добавить/убавить пару [число, месяц] в соотв. массив в одной-единственной функции...

Упс... опять ошибку в 10 строчках пропустил... мораль №2 - не надо торопиться;)

Это сообщение отредактировал(а) SelenIT - 9.11.2006, 20:36


--------------------
Осторожно! Данный юзер и его посты содержат ДГМО! Противопоказано лицам с предрасположенностью к зонеризму!
PM MAIL   Вверх
kamat0z
Дата 23.11.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 24.10.2006

Репутация: нет
Всего: нет



Спасибо огромное! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию.
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0476 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.