Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

календарь на JavaScript

5.3K
15 марта 2007 года
Bear Deon
82 / / 20.01.2007
Здрасте.
Начал заниматься JavaScript по книге Вадима Дунаева. И вот какая фишка у меня получилась. Решил я списать скрипт календаря. Переписал, запустил, а он не работает. Разметка хтмл показывает все как надо, а вот скрипт не хочет пахать, не че не кажет.
Код:
<html>

<head>
  <title>Каленадрь</title>
</head>
<script language="JavaScript">
var nowdate

function setToday() {                   //установка текущей даты
    var now =new Date();
    var day =now.getDate();
    var month =now.getMonth();
    var year =now.getYear();
    var anameday=new Array("Воскресенье", "Понедельник", "Вторник",
                                    "Среда", "Четверг", "Пятница", "Суббота")
    var nameday=anameday[now.getDay()]  //название дня недели
    if(year < 2000)
        year=year + 1900;
    this.focusDay=day;
    document.calControl.month.selectedIndex=month;
    document.calControl.year.value=year;
    displayCalendar(month, year);
    nowdate=day+"." + parseInt(month+1) + "." + year;
    document.all.PrevYear2.value=nowdate + " " + nameday;
    }

function isFourDigitYear(year) {
    if(year.length !=4) {
        alert("Год должен содержать 4 цифры");
        document.calControl.year.select();
        document.calControl.year.focus();
        } else { return true; }
}

function selectDate() {
    var year =document.calControl.year.value;
    if (isFourDigitYear(year)) {
        var day =0;
        var month=document.calControl.month.selectedIndex;
        displayCalendar(month, year)
    }
}

function setPrevYear() {                    //предыдущий год
    var year =document.calControl.year.value;
    if (isFourDigitYear(year)){
    var day =0;
    var month=document.calControl.month.selectedIndex;
    year--;
    document.calControl.year.value  =   year;
    displayCalendar(month, year);
    }
}

function setPrevMonth() {               //предыдущий месяц
    var year =document.calControl.year.value;
    if (isFourDigitYear(year)) {
    var day =0;
    var month=document.calControl.month.selectedIndex;
    if (month == 0) {
        month=11;
        if (year>1000){
            year--;
            document.calControl.year.value=year;
        }
    }else{ month-- }
        document.calControl.month.selectedIndex=month;
        displayCalendar(month, year);
    }
}

function setNextMonth() {               //следующий месяц
    var year =document.calControl.year.value;
    if (isFourDigitYear(year)){
        var day =0;
        var month=document.calControl.month.selectedIndex;
        if(month == 11) {
            month=0;
            year++;
            document.calControl.year.value=year;
            }else{ month++ }
        document.calControl.month.selectedIndex=month;
        displayCalendar(month, year);
    }
}

function setNextYear() {                    //следующий год
    var year =document.calControl.year.value;
    if (isFourDigitYear(year)){
        var day =0;
        var month=document.calControl.month.selectedIndex;
        year++;
        document.calControl.year.value=year;
        displayCalendar(month, day);
    }
}

function displayCalendar(month, year){  //показать календарь
    month=parseInt(month);
    year=parseInt(year);
    var i=0;
    var days=getDaysInMonth(month+1, year);
    var firstOfMonth=new Date(year, month, 1)
    var startingPos=firstOfMonth.getDay()-1;
    if(startingPos<0) startingPos=6
    days +=staringPos;
    document.calButtons.calPage.value = "Пн Вт Ср Чт Пт Сб Вс";
    document.calButtons.calPage.value +="\n _________________";
    for(i=0; i<startingPos; i++){
                if(i%7==0) document.calButtons.calPage.value +="\n";
                document.calButtons.calPage.value +="   ";
    }
    for(i=startingPos; i < days; i++){
        if (i%7==0)document.calButtons.calPage.value +="\n";
        if(i-startingPos+1 < 10)
        document.calButtons.calPage.value += "0";
        document.calButtons.calPage.value +="i-startingPos+1";
        document.calButtons.calPage.value += " ";
    }
    for(i=days; i<42; i++){
        if(i%7==0)document.calButtons.calPage.value += "\n";
        document.calButtons.calPage.value +="   ";
    }
    document.calControl.Go.focus()
}

function getDaysInMonth(month, year){   //получить день в месяце
    var days
    if(month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12)days=31;
    else if(month==4 || month==6 || month==9 || month==11)days=30;
    else if(month==2){
        if(visYear(year)) {days=29;}        //если год високосный
        else{days=28;}
    }
    return(days);
}

function visYear(Year){                 //високосные года
    if (((Year % 4)==0)&&((Year % 100)!=0) || ((Year % 400))==0)){
    return(true);
    }else{return(false);}
}
</script>

<form name="calControl" &#111;&#110;Submit="return false">
<table cellpadding=0 cellspacing=0 border=0>
<tr><td colspan=7>
<center>
<select name="month" &#111;&#110;change="selectDate()">
<option>Январь
<option>Ферваль
<option>Март
<option>Апрель
<option>Май
<option>Июнь
<option>Июль
<option>Август
<option>Сентябрь
<option>Октябрь
<option>Ноябрь
<option>Декабрь
</select>
<input name="year" type="text" size=4 maxlength=4 &#111;&#110;change="selectDate()">
<input type="button" name="Go" value=" OK " &#111;&#110;click="selectDate()" title="Если изменили год, щелкните здесь">
</td>
</tr>
</form>

<form name="calButtons">
<tr><td align="center">
<textarea font="Courier" name="calPage" wrap="no" rows=8 cols=24>
</textarea>
</td>
<tr><td>
<center>
<input type="button" name="PrevYear" value="<<"
        style="font-size:9"
        &#111;&#110;click="setPrevYear()"
        title="Год -">
<input type="button" name="PrevYear" value="<"
        style="font-size:9"
        &#111;&#110;click="setPrevMonth()"
        title="Месяц -">
<input type="button" name="PrevYear2" value=""
        style="font-size:9"
        &#111;&#110;click="setToday()"
        title="Календарь на текущую дату">
<input type="button" name="PrevYear" value=" >"
        style="font-size:9"
        &#111;&#110;click="setNextMonth()"
        title="Месяц +">
<input type="button" name="PrevYear" value=">>"
        style="font-size:9"
        &#111;&#110;click="setNexrYear()"
        title="Год +">
</center></td></tr></table></form>
<!--Запускаем функцию setToday-->
<script>setToday()</script>
</html>
337
15 марта 2007 года
shine
719 / / 09.06.2006
1)days +=staringPos;
staringPos - ошибка в названии переменной
2)if (((Year % 4)==0)&&((Year % 100)!=0) || ((Year % 400))==0))
Здесь одна закрывающая скобка лишняя.

Советы на будущее:
1)Установите себе какой нибудь редактор с подсветкой синтаксиса JavaScript. Я пользуюсь FAR-овским Colorer.
2)В FireFox есть замечательная штука - консоль JavaScript. Она позволяет очень быстро находить ощибки в JS.

Удачи.
5.3K
15 марта 2007 года
Bear Deon
82 / / 20.01.2007
Спасибо за подсказку, за обнаружение отечаток. Моя ошибка )=
И спасибо за консоль в огненой лисе.
Но календарь почему то не работает. Сорри за тупизм, но я просто тока начинаю изучать яву. У меня вот что получилось в окне:[ATTACH]1659[/ATTACH]
337
15 марта 2007 года
shine
719 / / 09.06.2006
Дебажте свой скрипт вставляя в ключевые места alert-ы. Вы же всю эту возню с календарем затеяли для того чтобы научиться? Вот и учитесь находить ошибки в коде.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог