Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 15.04.2019, 00:07
Кандидат Javascript-наук
Отправить личное сообщение для Besprizornik Посмотреть профиль Найти все сообщения от Besprizornik
 
Регистрация: 24.02.2019
Сообщений: 109

Сообщение от Rise
В старых браузерах может не работать display:none для option. Обнови браузер.
обновить браузер несложно, сложнее заставить всех посетителей это сделать, а скорее всего даже невозможно.

Сообщение от Rise
В текстовых редакторах есть функции Найти и Заменить текст, давай ты их освоишь.
нашёл 105 строку, сейчас при нажатии на кнопку 01.01 45г до н.э. конвертируется, но селект с днем недели пуст
Ответить с цитированием
  #32 (permalink)  
Старый 15.04.2019, 01:35
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,177

Сообщение от Besprizornik
сложнее заставить всех посетителей это сделать
Сейчас такая тенденция, что браузеры обновляются автоматически, из настроек убрали отключение обновления. Так что, если посетителю нравится страдать от своего устаревшего браузера, то это его личный выбор.
Сообщение от Besprizornik
но селект с днем недели пуст
Ну опечатка, мог бы догадаться, C.wDay.innerHTML = o на C.gwDay.innerHTML = C.jwDay.innerHTML = o
Ответить с цитированием
  #33 (permalink)  
Старый 15.04.2019, 13:01
Кандидат Javascript-наук
Отправить личное сообщение для Besprizornik Посмотреть профиль Найти все сообщения от Besprizornik
 
Регистрация: 24.02.2019
Сообщений: 109

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

Сообщение от Rise Посмотреть сообщение
Ну опечатка, мог бы догадаться, C.wDay.innerHTML = o на C.gwDay.innerHTML = C.jwDay.innerHTML = o
C.wDay.innerHTML = o на C.gwDay.innerHTML = C.jwDay.innerHTML = o ? или Days? не показывает день недели а не число, скорее надо
C.wDays.innerHTML = o на C.gwDays.innerHTML = C.jwDays.innerHTML = o
Ответить с цитированием
  #34 (permalink)  
Старый 15.04.2019, 16:40
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,177

Сообщение от Besprizornik
это нельзя сделать с помощью яваскрипт?
Можно, но это не значит что надо постоянно редактировать js, когда это можно сделать через css. Вчера примеры с обычным списком дней недели, сегодня список с одной опцией, завтра просто поле вывода, а послезавтра снова список со всеми опциями, потому что раньше ты считал преждевременно это решать. Поэтому я как кандидат в экстрасенсы, оставлю тебе обычный список, так как его можно легко стилизовать в любое из этих твоих состояний без редактирования js.
Сообщение от Besprizornik
или Days? не показывает день недели а не число
Типа стоит "день недели" в единственной числе, поэтому мы напишем Days во множественном. И где здесь логика?
Ответить с цитированием
  #35 (permalink)  
Старый 15.04.2019, 22:27
Кандидат Javascript-наук
Отправить личное сообщение для Besprizornik Посмотреть профиль Найти все сообщения от Besprizornik
 
Регистрация: 24.02.2019
Сообщений: 109

Сообщение от Rise Посмотреть сообщение
Можно, но это не значит что надо постоянно редактировать js, когда это можно сделать через css. Вчера примеры с обычным списком дней недели, сегодня список с одной опцией, завтра просто поле вывода, а послезавтра снова список со всеми опциями, потому что раньше ты считал преждевременно это решать. Поэтому я как кандидат в экстрасенсы, оставлю тебе обычный список, так как его можно легко стилизовать в любое из этих твоих состояний без редактирования js.
можно попробовать прочитать первый пост данной темы, там речь шла о абсолютно пустым списке без опций поверх которого расположен спан с днём недели, что выглядит как список с одной опцией, но если на яваскрипт можно обойтись без спан'а, только списком с одной опцией, то зачем какие-то костыли со спанами?

оставить список со всеми опциями, это выглядит как во времена застоя при союзе, сначала создаём проблемы через js, потом с переменным успехом будем решать их через css, или как в армии – круглое носим, квадратное катаем,

если конечно это возможно, я бы предпочёл чтобы я один раз описал полностью что я хочу от скрипта, один раз отредактировать js, и поставить на этом точку, если потом и будет редактироваться что либо то это только css цвет текста/фона и подобное...

Сообщение от Rise Посмотреть сообщение
Типа стоит "день недели" в единственной числе, поэтому мы напишем Days во множественном. И где здесь логика?
но Day в твоём скрипте это число, а Days день недели.
Ответить с цитированием
  #36 (permalink)  
Старый 15.04.2019, 23:51
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,177

Сообщение от Besprizornik
если потом и будет редактироваться что либо то это только css цвет текста/фона и подобное...
Вот потом и отредактируешь css для select disabled наравне с остальными select к единому виду, нет никаких проблем.
Ответить с цитированием
  #37 (permalink)  
Старый 16.04.2019, 00:52
Кандидат Javascript-наук
Отправить личное сообщение для Besprizornik Посмотреть профиль Найти все сообщения от Besprizornik
 
Регистрация: 24.02.2019
Сообщений: 109

Сообщение от Rise Посмотреть сообщение
Ну опечатка, мог бы догадаться, C.wDay.innerHTML = o на C.gwDay.innerHTML = C.jwDay.innerHTML = o
84 строку давно исправил...

Сообщение от Rise
Типа стоит "день недели" в единственной числе, поэтому мы напишем Days во множественном. И где здесь логика?
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Конвертировать дату из григорианского календаря в юлианский и обратно.</title>
<style>
body, div, span, select, input, button { font: 16px serif; }
div { padding : 5px; margin: 0 5px 5px 5px; border: 1px solid #999; }
.position { display: inline-block; padding: 0; margin: 0 0 5px 0; position: relative; border: none; }
.gwDay, .jwDay { width: 136px; }
.weekday { display: inline-block; position: relative; right: 132px; top : 1px; }
.date { white-spage: nowrap; padding: 0; margin: 0 0 5px 0; border: none; }
</style>
</head>
<body>
<form name="converter">
    <div>
    <span>Сегодня:</span><br>
    <div class="position">
   <select name="gwDay" class="gwDay"></select>
    <span class="weekday"></span>
    </div>
    <div class="date">
    <select name="gDay"></select>
    <select name="gMonth"></select>
    <input type="number" name="gYear" size="5" min="-4713">
    <i>г.</i>
    <select name="gEra"></select></div>
по григорианскому календарю<br>(<i>новый стиль</i>).<br>
    <input type="button" name="gCalc" value="Смотреть"> 
    <button type="button" class="express" value="g_n_o_w_ce">Сбросить</button>
    </div>
    <div>
    <span>Сегодня:</span><br>
    <div class="position">
   <select name="jwDay" class="jwDay"></select>
    <span class="weekday"></span>
    </div>
    <div class="date">
    <select name="jDay"></select>
    <select name="jMonth"></select>
    <input type="number" name="jYear" size="5" min="-4712">
    <i>г.</i>
    <select name="jEra"></select></div>
по юлианскому календарю<br>(<i>старый стиль</i>).<br>
    <input type="button" name="jCalc" value="Смотреть"> 
    <button type="button" class="express" value="g_n_o_w_ce">Сбросить</button>
    </div>
    <div>
    Впервые григорианский календарь был введён папой римским Григорием XIII в католических странах  с 5 октября 1582 года взамен прежнего юлианского: следующим днём после четверга 4 октября стала <button type="button" class="express" value="g_15_10_1582_ce">пятница 15 октября 1582 г. н. э.</button>. Григорианский календарь используется в большинстве государств и стран мира. В литературе также применяется название — Новый стиль.
      </div>
      <div>
    Пролептический григорианский календарь (предваряющий григорианский календарь, от др.-греч. πρόληψις «предвосхищение») — календарь, расширяющий григорианский календарь на период до его введения 15 октября 1582 года.
      </div>
      <div>
	    Юлиа́нский  календа́рь — календарь, разработанный группой александрийских астрономов во главе с Созигеном. Календарь назван в честь Юлия Цезаря, по указу которого был введен в Римской империи с <button type="button" class="express" value="j_1_1_45_bce">1 января 45 г. до н. э.</button> Год по юлианскому календарю начинается 1 января, так как именно в этот день с 153 года до н. э. избранные комициями консулы вступали в должность. Юлианский календарь заменил старый римский календарь и основывался на астрономической культуре эллинистического Египта.
</div>
</form>
<script>
document.addEventListener('DOMContentLoaded', function () {
// https://en.wikipedia.org/wiki/Julian_day#Julian_day_number_calculation
// The algorithms are valid for JDN >= 0, Gregorian >= 24.11.-4713, Julian >= 01.01.-4712
function gregorianToJdn(d, m, y) {
    return tr((1461 * (y + 4800 + tr((m - 14) / 12))) / 4) +
           tr((367 * (m - 2 - 12 * tr((m - 14) / 12))) / 12) -
           tr((3 * tr((y + 4900 + tr((m - 14) / 12)) / 100)) / 4) + d - 32075;
}
function julianToJdn(d, m, y) {
    return 367 * y - tr((7 * (y + 5001 + tr((m - 9) / 7))) / 4) + tr((275 * m) / 9) + d + 1729777;
}
function jdnToJulianOrGregorian(j, to) { // to: true (julian) false (gregorian)
    var f = (to) ? (j + 1401) : (j + 1363 + tr((tr((4 * j + 274277) / 146097) * 3) / 4));
    var e = 4 * f + 3, h = 5 * tr((e % 1461) / 4) + 2;
    var d = tr((h % 153) / 5) + 1, m = ((tr(h / 153) + 2) % 12) + 1, y = tr(e / 1461) - 4716 + tr((14 - m) / 12);
    return { d: d, m: m, y: y }; 
}
function jdnToWeekDay(j) { return (j % 7) + 1; }
function tr(n) { return n - n % 1; } // truncate (for integer division)
// -- wiki end --
var C = document.converter;
// options
var wdays = ['Понедельник','Вторник','Среда','Четверг','Пятница','Суббота','Воскресенье'];
for (var o = '', i = 0; i < wdays.length; i++) o += '<option value="' + (i + 1) + '">' + wdays[i] + '</option>';

C.gwDay.value = C.jwDay.value = o
for (var o = '', i = 1; i <= 31; i++) o += '<option value="' + i  + '">' + i + '</option>';
C.gDay.innerHTML = C.jDay.innerHTML = o;
var months = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'];
for (var o = '', i = 0; i < months.length; i++) o += '<option value="' + (i + 1) + '">' + months[i] + '</option>';
C.gMonth.innerHTML = C.jMonth.innerHTML = o;
var eras = ['н. э.','до н. э.'], _eras = ['ce','bce'];
for (var o = '', i = 0; i < eras.length; i++) o += '<option value="' + _eras[i] + '">' + eras[i] + '</option>';
C.gEra.innerHTML = C.jEra.innerHTML = o;
// -- options end --
C.gCalc.onclick = function () {
    var gd = +C.gDay.value, gm = +C.gMonth.value, gy = historicalToAstronomical(+C.gYear.value, C.gEra.value);
    var jdn = gregorianToJdn(gd, gm, gy), wd = jdnToWeekDay(jdn), jd = jdnToJulianOrGregorian(jdn, true);
    var jy = astronomicalToHistorical(jd.y);
    C.gwDay.value = C.jwDay.value = wd, C.jDay.value = jd.d, C.jMonth.value = jd.m, C.jYear.value = jy.y, C.jEra.value = jy.e;
    onUpdateAll(jdn);
};
C.jCalc.onclick = function () {
    var jd = +C.jDay.value, jm = +C.jMonth.value, jy = historicalToAstronomical(+C.jYear.value, C.jEra.value);
    var jdn = julianToJdn(jd, jm, jy), wd = jdnToWeekDay(jdn), gd = jdnToJulianOrGregorian(jdn, false);
    var gy = astronomicalToHistorical(gd.y);
    C.gwDay.value = C.jwDay.value = wd, C.gDay.value = gd.d, C.gMonth.value = gd.m, C.gYear.value = gy.y, C.gEra.value = gy.e;
    onUpdateAll(jdn);
};
function initDate(c, d, m, y, e) {
    if (d + m + y == 'now') { var n = new Date(); d = n.getDate(), m = n.getMonth() + 1, y = n.getFullYear(); }
    C[c + 'Day'].value = d, C[c + 'Month'].value = m, C[c + 'Year'].value = y, C[c + 'Era'].value = e;
    C[c + 'Calc'].onclick();
}
function historicalToAstronomical(y, e) { // e: 'ce' or 'bce'
    e = (y < 1) ? 'bce' : e;
    return ((e == 'bce') && y > 0) ? (1 - y) : y;
}
function astronomicalToHistorical(y) {
    var e = (y < 1) ? 'bce' : 'ce';
    return { y: (e == 'bce') ? -(y - 1) : y, e: e };
}
for (var ess = C.querySelectorAll('.express'), es, i = 0; i < ess.length; i++) {
     es = ess[i], es.onclick = Function.prototype.apply.bind(initDate, null, es.value.split('_'));
}
initDate('g', 'n', 'o', 'w', 'ce');
function onUpdateAll(jdn) {
    console.log('JDN:', jdn);
    console.assert(jdn >= 2299161, 'Proleptic: Gn < 15.10.1582 CE');
    console.assert(jdn >= 1704987, 'Proleptic: Jn < 01.01.45 BCE');
    console.assert(jdn >= 0, 'Invalid: Gn < 24.11.4714 BCE, Jn < 01.01.4713 BCE');
}
});
</script>
</body>
</html>


не могу понять почему не показывает день недели?
Ответить с цитированием
  #38 (permalink)  
Старый 16.04.2019, 21:43
Кандидат Javascript-наук
Отправить личное сообщение для Besprizornik Посмотреть профиль Найти все сообщения от Besprizornik
 
Регистрация: 24.02.2019
Сообщений: 109

Rise,
неужели так трудно сказать какие строчки надо исправить и как
Ответить с цитированием
  #39 (permalink)  
Старый 17.04.2019, 00:04
Кандидат Javascript-наук
Отправить личное сообщение для Besprizornik Посмотреть профиль Найти все сообщения от Besprizornik
 
Регистрация: 24.02.2019
Сообщений: 109

Rise в 38 посте сделал как ты сказал, 85 и 87 строчки исправил, что ещё не так?
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести на печать DIV как его видно в браузере (с учетом фона с стилей) unomomento Элементы интерфейса 5 27.12.2013 23:43
Как приплюсовать 3 inputa и вывести, сообщение. ainur777 Элементы интерфейса 2 10.11.2013 14:33
Как вывести значение выбранного селекта в блок? And5 Events/DOM/Window 23 11.09.2013 18:32
Подскажите, пжлст, как вывести в тот же документ результат ф-ции? LexXxeL Элементы интерфейса 4 13.05.2009 13:26
Как вывести на экран значение функции SELECT MAX(id) Владдд Серверные языки и технологии 3 25.01.2009 16:07