Как можно сократить (и можно ли) этот скрипт (см. внутри)?
<script language = "JavaScript">
Date.prototype.getDOY = function()
{
var onejan = new Date(this.getFullYear(),0,1);
return Math.ceil((this - onejan) / 86400000);
}
Date.prototype.isLeapYear = function()
{
var year = this.getFullYear();
return ((year & 3) == 0 && (year % 100 || (year % 400 == 0 && year)));
}
var today = new Date();
var yearday = today.getDOY();
var path = "yenonotie_files/enderi/";
var x = 0;
var enderi5 = new Array(
path + "1.png",
path + "2.png",
path + "3.png",
path + "4.png",
path + "5a.png");
var enderi6 = new Array(
path + "1.png",
path + "2.png",
path + "3.png",
path + "4.png",
path + "5b.png",
path + "6.png");
var months = new Array();
var days = new Array();
var y = 30;
while (x <= 11)
{
months [x] = "yenonotie_files/months/" + x + ".png";
++x;
}
x = 0
while (x <= 29)
{
days [x] = "yenonotie_files/days/" + x + ".png";
++x;
}
x = 1;
if (yearday >= 361)
{
if (today.isLeapYear())
{
document.getElementById("pic1").src = "yenonotie_files/main/enderi6.png";
document.getElementById("pic2").src = enderi6 [yearday - 361];
}
else
{
document.getElementById("pic1").src = "yenonotie_files/main/enderi5.png";
document.getElementById("pic2").src = enderi5 [yearday - 361];
}
}
else
{
while (y <= yearday - 1)
{
++x;
y += 30;
}
yearday = yearday - (30 * (x - 1));
document.getElementById("pic1").src = "yenonotie_files/main/calendar.png";
document.getElementById("pic2").src = months [x];
document.getElementById("pic3").src = days [yearday];
}
</script>
|
Примечание 1: Все работает, надо только сократить...
Примечание 2: Например, нельзя ли функции, которые используются только по 1 разу, не назначать заранее, а прямо в программе по действиям выполнять? Ну, то есть то, что после "function () { " вставить вместо вызова функции или как-то так... |
Цитата:
|
ksa,
Я сначала такой же вопрос написал, потом подумал и удалил(посмотрев на выше приведённый скрипт)))) |
Цитата:
|
O_O(:blink:)
:) |
Цитата:
Цитата:
А в последние 5 дней года такое: (Или 6, если год високосный: |
Hyuga_Nia, что-то картинок я твоих не вижу... :(
|
ksa,
лучше и не видеть!!!!:) Hyuga_Nia, Если бы понятно было бы, что да как) |
Цитата:
|
Цитата:
|
Чей энто календарь?
В каждом месяце ровно 30 дней, при этом учитываются високосные года? |
Цитата:
Какой-нибудь эльфийский календарь. Интересно, а какая у них система счисления? Вроде бы есть определенный порядок, но и сумбур присутствует. upd: 12-ричная? |
Сократил на солько можно без тестирования.))
<script type="text/javascript">
var today = new Date();
var yearday = Math.ceil((+today - today.setMonth(0,0)) / 864e5);
today.setMonth(12,366);
var leap = today.getDate()!=1?'leap':'';
var d = 'yenonotie_files/';
var id = function(i){return document.getElementById(i)};
if (yearday > 360)
{
id("pic1").src = d+'main/enderi'+leap+'.png';
id("pic2").src = d+'enderi/' + (yearday+(yearday==365&&leap)) + '.png';
}
else
{
id("pic1").src = d+'main/calendar.png';
id("pic2").src = d+'months/' + Math.floor(yearday/30) + '.png'; //возможно (Math.floor(yearday/30)+1)
id("pic3").src = d+'days/' + yearday%30 + '.png';
}
</script>
Переименовать ->
yenonotie_files/enderi/1.png yenonotie_files/enderi/361.png
yenonotie_files/enderi/2.png yenonotie_files/enderi/362.png
yenonotie_files/enderi/3.png yenonotie_files/enderi/363.png
yenonotie_files/enderi/4.png yenonotie_files/enderi/364.png
yenonotie_files/enderi/5a.png yenonotie_files/enderi/365.png
yenonotie_files/enderi/5b.png yenonotie_files/enderi/365leap.png
yenonotie_files/enderi/6.png yenonotie_files/enderi/366.png
yenonotie_files/main/enderi5.png yenonotie_files/main/enderi.png
yenonotie_files/main/enderi6.png yenonotie_files/main/enderileap.png
|
Цитата:
|
Hyuga_Nia, просто для дней многое решается делением по модулю... Т.е. массивы практически не нужны...
|
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Цитата:
Цитата:
|
Например для "нашего" календаря, для распознавания дней недели, достаточно к количеству дней прибавть какую-то константу (зависит от языка) для коррекции и разделить по модулю 7.
Результат операции будет во множестве (0, 1, 2, ..., 6), что соответствует количеству дней недели... |
Цитата:
Aetae, Почти все работает, не отображается тока месяц. P. S. Это, конечно не важно, но почему все используют эти одинарные кавычки вместо обычных? |
Цитата:
|
Цитата:
<input type='text' id='info' name='info' value='#($g(%request.Data("info",1)))#' />
Да и в обычных текстах чаще используются двойные кавычки...
document.getElementById('info').value='ООО "Рога и копыта" ищет сырьё...'
|
Цитата:
К месяцу коммент стоит, то может и +1. Цитата:
Ну и: Цитата:
|
Aetae,
Все работает, спсибо! Ты был прав насчет +1 к месяцу. Цитата:
|
Aetae,
Еще раз спасибо! ТЕМА ЗАКРЫТА |
Зря, " в два раза больше трафика съест, чем '.
шутка А файлы месяца тогда рекомендую тож переименовать на единицу меньше, чтоб лишних действий в скрипте не писать.) сотые доли миллисекунды конечно, но эстетика же) |
Цитата:
Эстетика - это святое... |
Цитата:
Цитата:
Ну вот посмотрите. Если я правильно понимаю, то чтение идет слева-направо и сверху-вниз. Код:
т тт ттт L Lт LттПервая строка выглядит вообще как 4-ричная система. 1, 2, 3, 10, 11, 12, ... У эльфов вообще сколько пальцев, конечностей? Что говорят эльфийские легенды о происхождении их системы счисления? (-: Вот это я и называю - определенная закономерность есть, но она "ломается". Вообще-то это к делу не относится, но просто интересно по какому принципу создавались эльфийские цифры. (-: |
| Часовой пояс GMT +3, время: 09:29. |