Jump to content

Часы


still swamp
 Share

Recommended Posts

Код весь в кучу, непонятно что и где. Почисти для начала его. А так вроде пашет.

Код в кучу, потому что работает оптимизатор перед отправкой пользователю. Никак не дойдут руки сделать параметр &optimise=2 в урле.

Link to comment
Share on other sites

Кнопка "i" на коте не работает, выкидывает JS-ошибку "функция не определена" (FF 3.6.11). И для стандартного времени, имхо, привычнее запись а-ля "15:09:05" (про метрическое не знаю, как там принято:). Ну и, совсем имхо, получать кол-во миллисекунд с начала текущего дня чуть проще а-ля ((now = new Date()) - new Date(now.getFullYear(), now.getMotnth(), now.getDate(), 0, 0, 0)), чем через серию умножений. Впрочем, в обоих вариантах остается проблема летнего/зимнего времени — как, кстати, она решается в метрике?

Link to comment
Share on other sites

А в чём соль? Где польза для человечества? Зачем вообще такие часы нужны?

Да масса ответов

1. Что бы вопросы задавали "зачем?".

2. Сделал просто так, и могу себе это позволить.

3. Бессмысленность действий определена диагнозом.

4. Обкатываю систему а клиент не любит экспериментов. Часики никому ничего не должны. Сказали убрать див вокруг тэйбла - уберу. А в рабочим коде рыться не любитель.

Edited by still swamp
Link to comment
Share on other sites

Код в кучу, потому что работает оптимизатор перед отправкой пользователю. Никак не дойдут руки сделать параметр &optimise=2 в урле.

&optimise=1 приделали

кнопку (i) починили

лишний div убрали

Идут ли часики. Если не идут, то на каком браузере?

Edited by still swamp
Link to comment
Share on other sites

  • 2 weeks later...

Есть один очень неприятный момент - время меняет ширину. Т.е. при смене 1:50:9 на 1:50:10 строка смещается и это раздражает. Я бы использовал формат 00:00:00 и моноширинный шрифт (на всякий случай).

Link to comment
Share on other sites

Согласен полностью на счет формата. Меня остановила простейшая вещь. Не смог на вскидку найти функцию которая дополнит строку до нужной длинны нулями и не стал писать свое. Если есть такое, буду благодарен за помощь.

Link to comment
Share on other sites

Ну это совсем просто. Например:

var parts = timeString.split(':');

for (var i = 0; i < parts.lenght; i++)
{
if (parts[i].lenght < 2)
{
parts[i] = '0' + parts[i];
}
}

timeString = parts.join(':');

timeString - это строка, в которой записано время.)

Edited by ZI DAN
Link to comment
Share on other sites

на два порядка круче пхпешного ресайзера фоток...

Никакого пхп. Зря вы так.

Не оптимально, знаю. Но зато очевидно.)

Ощущение от JS - как со стекляшкой, вместо фрезы. Часики подправил. Функция может пригодится кому:

function clStringCompleteLeft(AString, ALength, AChar)
/*Дополняет строку AString до длинны ALength символами AChar слева*/
{
var Result=''; /*переменная для результата*/
var k=0; /*смещение в AString относительно маркера текущей позиции*/

for(var i=ALength; i>0; i--)
{
k=AString.length+i-ALength-1;
if(k>=0){Result=AString[k]+Result}else{Result=AChar+Result};
}
return Result;
}

Edited by still swamp
Link to comment
Share on other sites

Ощущение от JS - как со стекляшкой, вместо фрезы.

Взять простой в общем скрипт и написать его так, чтобы никто ни о чем не догадался... оригинально ^_^

Или может я в этом мире ничего не понимаю... Вместо того чтобы заюзать split/join высчитывать мифическое смещение... нет мсье точно знает толк...

Link to comment
Share on other sites

Или может я в этом мире ничего не понимаю... Вместо того чтобы заюзать split/join высчитывать мифическое смещение... нет мсье точно знает толк...

В посте чуть повыше я в явном виде спросил, как это можно сделать проще. Хороша ложка к обеду. Не так ли? ^_^

Обратите внимание, у меня нет строки, которую делить стоит сплитом. Разделитель может быть не двоеточие.

Вы судя по всему предпочитаете проприетарные решения. Мне нравится универсальные.

Да нет, я обидеть не хотел. Имел введу явно более разумную струю в часах...

Несравнимые вещи, да и не стоит искать разумную струю в моей писанине. :)

Edited by still swamp
Link to comment
Share on other sites

В посте чуть повыше я в явном виде спросил, как это можно сделать проще. Хороша ложка к обеду. Не так ли?

В посте выше вам дали готовое решение.

Обратите внимание, у меня нет строки, которую делить стоит сплитом. Разделитель может быть не двоеточие.

Вы судя по всему предпочитаете проприетарные решения. Мне нравится универсальные.

И как вы собираетесь юзать ваше "универсальное" решение? Т.е. вы будете брать отдельно строку с минутами, отдельно с секундами и отдельно с часами и отдельно приписывать к ним нули?

Link to comment
Share on other sites

Решение дали, я его осмотрел, понял, счел не подходящим для случая. Какой смысл снова в него тыкать? Бессмысленная растрата эмоций.

Вот собственно:

obj.innerHTML=clStrLeft(ch.toString(),2,'0')+':'+clStrLeft(cm.toString(),2,'0')+':'+clStrLeft(cs.toString(),2,'0');

Плюс полезная функция на будущее:

function clStrLeft(AString, ALength, ACharString)
/*
Дополняет слева строку AString до длинны ALength символами ACharString
В случае если длинна строки AString более ALength, строка обрезается слева.
*/
{
var Result=''; /*переменная для результата*/
var k=0; /*смещение в AString относительно маркера текущей позиции*/
var j=0; /*маркер строки из которой происходит дополнение*/

for(var i=ALength; i>0; i--)
{
k=AString.length+i-ALength-1;
if(k>=0)
{
Result=AString[k]+Result;
}
else
{
j--;
if (j<0) j=ACharString.length-1;
Result=ACharString[j]+Result;
}
}
return Result;
}

Edited by still swamp
Link to comment
Share on other sites

Просто странно вызывать функцию 3 раза вместо одного раза... Получается что у вас работает конкатенация строк + 3 раза отрабатывает цикл, внутри которого снова происходит конкатенация... А где ж оптимизация скрипта, где скорость... Я понимаю, что в таком маленьком скрипте это все несущественно и некритично, но все-таки...

Имхо у ZI DAN решение более правильное. Тем более, что разделитель можно передавать в функцию.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy