Форум программистов, компьютерный форум, киберфорум
JavaScript для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431

Скрипт, определяющий по введенной дате рождения знак зодиака

19.07.2025, 15:02. Показов 1658. Ответов 37
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<button id="minusWeek">-</button>
<button id="plusWeek">+</button>
<select id="desiredDay"></select>
<button id="minusDay">-</button>
<button id="plusDay">+</button>
<select id="desiredMonth"></select>
<button id="minusMonth">-</button>
<button id="plusMonth">+</button>
<button id="today"></button>
<script>
скрипт для выбора даты... 
</script>
<div id="zodiacSign"></div>
есть такой html

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<script>
  var zodiacSigns = [
    { html: '<span class="bBold">Овен</span> <span class="zodiacGlyph">♈</span><br><span class="bNormal">21 марта — 20 апреля</span>', date: [3, 21] },
    { html: '<span class="bBold">Телец</span> <span class="zodiacGlyph">♉</span><br><span class="bNormal">21 апреля — 20 мая</span>', date: [4, 21] },
    { html: '<span class="bBold">Близнецы</span> <span class="zodiacGlyph">♊</span><br><span class="bNormal">21 мая — 21 июня</span>', date: [5, 21] },
    { html: '<span class="bBold">Рак</span> <span class="zodiacGlyph">♋</span><br><span class="bNormal">22 июня — 22 июля</span>', date: [6, 22] },
    { html: '<span class="bBold">Лев</span> <span class="zodiacGlyph">♌</span><br><span class="bNormal">23 июля — 22 августа</span>', date: [7, 23] },
    { html: '<span class="bBold">Дева</span> <span class="zodiacGlyph">♍</span><br><span class="bNormal">23 августа — 22 сентября</span>', date: [8, 23] },
    { html: '<span class="bBold">Весы</span> <span class="zodiacGlyph">♎</span><br><span class="bNormal">23 сентября — 22 октября</span>', date: [9, 23] },
    { html: '<span class="bBold">Скорпион</span> <span class="zodiacGlyph">♏</span><br><span class="bNormal">23 октября — 21 ноября</span>', date: [10, 23] },
    { html: '<span class="bBold">Стрелец</span> <span class="zodiacGlyph">♐</span><br><span class="bNormal">23 ноября — 22 декабря</span>', date: [11, 23] },
    { html: '<span class="bBold">Козерог</span> <span class="zodiacGlyph">♑</span><br><span class="bNormal">21 декабря — 19 января</span>', date: [12, 21] },
    { html: '<span class="bBold">Водолей</span> <span class="zodiacGlyph">♒</span><br><span class="bNormal">20 января — 19 февраля</span>', date: [1, 20] },
    { html: '<span class="bBold">Рыбы</span> <span class="zodiacGlyph">♓</span><br><span class="bNormal">20 февраля — 20 марта</span>', date: [2, 20] }
  ];
 
  var desiredDay = document.getElementById('desiredDay');
  var desiredMonth = document.getElementById('desiredMonth');
  var zodiacSignDiv = document.getElementById('zodiacSign');
 
  function isDateLessOrEqual(date1, date2) {
    if (date1[0] < date2[0]) return true;
    if (date1[0] === date2[0] && date1[1] <= date2[1]) return true;
    return false;
  }
 
  function findZodiac(monthZeroBased, day) {
    var month = monthZeroBased + 1;
    var selectedDate = [month, day];
    for (var i = zodiacSigns.length - 1; i >= 0; i--) {
      var signDate = zodiacSigns[i].date;
      if (isDateLessOrEqual(signDate, selectedDate)) {
        return zodiacSigns[i].html;
      }
    }
    return zodiacSigns[zodiacSigns.length - 1].html;
  }
 
  function updateZodiac() {
    var day = parseInt(desiredDay.value, 10);
    var month = parseInt(desiredMonth.value, 10);
    if (!isNaN(day) && !isNaN(month)) {
      zodiacSignDiv.innerHTML = findZodiac(month, day);
    } else {
      zodiacSignDiv.innerHTML = '';
    }
  }
  desiredDay.addEventListener('change', updateZodiac);
  desiredMonth.addEventListener('change', updateZodiac);
 
  updateZodiac();
</script>
скрипт вставляет последний знак зодиака, а по идее должен вставлятся знак соответствующий дате в селектах

скрипт должен
1. считать данные из селект
2. сравнить значения из селектов и значения в массиве, найти в массиве ближайшую дату, меньше или равную дате из селектов, и вставить в див соответствующий хтмл код
3. скрипт должен реагировать как на ручной выбор значений в селектах , так и на изменение даты при клике на кнопки... помогите исправить
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.07.2025, 15:02
Ответы с готовыми решениями:

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

Даны два целых числа: D (день) и M (месяц), определяющие дату. Вывести знак Зодиака, соответствующий этой дате.
Даны два целых числа: D (день) и M (месяц), определяющие дату. Вывести знак Зодиака,...

Написать скрипт, который определяет по введенной дате рождения сколько было лет в период всей жизни
Написать скрипт, который определяет по введенной дате рождения сколько было лет в период всей...

37
 Аватар для voraa
1249 / 1158 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
24.07.2025, 06:57
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
Ну вот открой любой учебник по JS'у и почитай эти самые буквы из алфавита.
Ну с другой стороны, например, Object.entries() выдает массив массивов
[[key1, value1], [key2, valu2],...]
, а не массив объектов
[{key: key1, value: value1}, {key: key2, value: value3},....]
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3823 / 1661 / 428
Регистрация: 14.03.2022
Сообщений: 4,168
24.07.2025, 10:25
бел ка, дело не в буквах... Дело в самой структуре данных.
Даже если все пихать в массивы - тогда уже лучше так

JavaScript
1
["Водолей", "♒", ["21 января — 19 февраля", "20 января — 18 февраля"], [21, 20]]
С таким вариантом будет всяко удобнее работать.

Только у тебя опять придется преобразовывать строку ru в номер индекса. В случае с объектом значение строки можно было бы использовать без всяких преобразований.
Т.ч. ты "экономишь" в одном, но тут же генериш кучу "вспомогательного" текста в программе.

По формированию структур данных написано много учебников. Т.ч. это "объяснить" довольно утомительно.
Почитай для начала про первую, вторую и третью "нормальные формы". Это, можно сказать, основные критерии при построении структуры данных...
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
24.07.2025, 23:06  [ТС]
Usaga, речь не "про вдабливал", просто интересно мнения разных людей, чисто в двух словах, чем удобнее и лучше разные структуры массивов...
0
 Аватар для voraa
1249 / 1158 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
25.07.2025, 06:52
Цитата Сообщение от krvsa Посмотреть сообщение
С таким вариантом будет всяко удобнее работать.
arr[i][3] все же удобнее, чем arr[i][2][1]
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3823 / 1661 / 428
Регистрация: 14.03.2022
Сообщений: 4,168
25.07.2025, 08:52
voraa, лишний раз убеждаюсь что мнения у людей разные...
Для меня "одинаковая" информация должна лежать в "одном месте", а не в куче с "другой".
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
26.07.2025, 12:10  [ТС]
в итоге пришла к такому варианту

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<script>
  (function() {
    var versionSelect = document.getElementById('versionSelect');
    var daySelect = document.getElementById('desiredDay');
    var monthSelect = document.getElementById('desiredMonth');
    var zodiacDiv = document.getElementById('zodiacSignInfo');
 
    // Заполнить селект выбора версии знаков зодиака
    function fillVersionSelect() {
      var versions = [
        {value: 'ru', text: 'Русская версия'},
        {value: 'classic', text: 'Классическая версия'}
      ];
      versionSelect.innerHTML = '';
      versions.forEach(function(v){
        var opt = document.createElement('option');
        opt.value = v.value;
        opt.textContent = v.text;
        versionSelect.appendChild(opt);
      });
    }
 
    // Массив знаков зодиака с вашей структурой
    var zodiacSigns = [
      {
        name: "Овен",
        symbol: "♈",
        ru: { rangeText: "21 марта — 20 апреля", startDay: 21 },
        classic: { rangeText: "21 марта — 19 апреля", startDay: 21 }
      },
      {
        name: "Телец",
        symbol: "♉",
        ru: { rangeText: "21 апреля — 21 мая", startDay: 21 },
        classic: { rangeText: "20 апреля — 20 мая", startDay: 20 }
      },
      {
        name: "Близнецы",
        symbol: "♊",
        ru: { rangeText: "22 мая — 21 июня", startDay: 22 },
        classic: { rangeText: "21 мая — 20 июня", startDay: 21 }
      },
      {
        name: "Рак",
        symbol: "♋",
        ru: { rangeText: "22 июня — 22 июля", startDay: 22 },
        classic: { rangeText: "21 июня — 22 июля", startDay: 21 }
      },
      {
        name: "Лев",
        symbol: "♌",
        ru: { rangeText: "23 июля — 22 августа", startDay: 23 },
        classic: { rangeText: "23 июля — 22 августа", startDay: 23 }
      },
      {
        name: "Дева",
        symbol: "♍",
        ru: { rangeText: "23 августа — 23 сентября", startDay: 23 },
        classic: { rangeText: "23 августа — 22 сентября", startDay: 23 }
      },
      {
        name: "Весы",
        symbol: "♎",
        ru: { rangeText: "24 сентября — 23 октября", startDay: 24 },
        classic: { rangeText: "23 сентября — 22 октября", startDay: 23 }
      },
      {
        name: "Скорпион",
        symbol: "♏",
        ru: { rangeText: "24 октября — 22 ноября", startDay: 24 },
        classic: { rangeText: "23 октября — 21 ноября", startDay: 23 }
      },
      {
        name: "Стрелец",
        symbol: "♐",
        ru: { rangeText: "23 ноября — 22 декабря", startDay: 23 },
        classic: { rangeText: "22 ноября — 21 декабря", startDay: 22 }
      },
      {
        name: "Козерог",
        symbol: "♑",
        ru: { rangeText: "22 декабря — 20 января", startDay: 22 },
        classic: { rangeText: "22 декабря — 19 января", startDay: 22 }
      },
      {
        name: "Водолей",
        symbol: "♒",
        ru: { rangeText: "21 января — 19 февраля", startDay: 21 },
        classic: { rangeText: "20 января — 18 февраля", startDay: 20 }
      },
      {
        name: "Рыбы",
        symbol: "♓",
        ru: { rangeText: "20 февраля — 20 марта", startDay: 20 },
        classic: { rangeText: "19 февраля — 20 марта", startDay: 19 }
      }
    ];
 
    // Функция определения знака зодиака по дню, месяцу и версии
    function getZodiac(day, month, signs, version) {
      var index = month - 2;
      if (index < 0) index += 12;
 
      var startDay = signs[index][version].startDay;
      if (day >= startDay) {
        return {
          name: signs[index].name,
          symbol: signs[index].symbol,
          range: signs[index][version].rangeText
        };
      } else {
        var prevIndex = (index + 11) % 12;
        return {
          name: signs[prevIndex].name,
          symbol: signs[prevIndex].symbol,
          range: signs[prevIndex][version].rangeText
        };
      }
    }
 
    // Обновить вывод знака зодиака
    function updateZodiacSignInfo() {
      var day = parseInt(daySelect.value, 10);
      var month = parseInt(monthSelect.value, 10);
      if (!day || !month) {
        zodiacDiv.innerHTML = '';
        return;
      }
      var version = versionSelect.value || 'ru';
      var sign = getZodiac(day, month, zodiacSigns, version);
      var html = '<span class="bBold">' + sign.name + '</span> ' +
                 '<span class="zodiacGlyph">' + sign.symbol + '</span><br>' +
                 '<span class="bNormal">' + sign.range + '</span>';
      zodiacDiv.innerHTML = html;
    }
 
    // Инициализация
    fillVersionSelect();
 
    var desiredDay = document.getElementById('desiredDay');
    var desiredMonth = document.getElementById('desiredMonth');
    var desiredYear = document.getElementById('desiredYear');
    var desiredEra = document.getElementById('desiredEra');
    var versionSelect = document.getElementById('versionSelect');
 
    // Подписка на события изменения даты и версии
    [desiredDay, desiredMonth, desiredYear, desiredEra, versionSelect].forEach(function(el) {
      el.addEventListener('change', updateZodiacSignInfo);
    });
 
    // Добавляем обработчики кнопок, чтобы обновлять знак при изменении даты
    var buttonsIds = ['minusWeek', 'plusWeek', 'minusDay', 'plusDay', 'minusMonth', 'plusMonth', 'minusYear', 'plusYear', 'minusEra', 'plusEra', 'today'];
    buttonsIds.forEach(function(id) {
      var btn = document.getElementById(id);
      if (btn) {
        btn.addEventListener('click', updateZodiacSignInfo);
      }
    });
 
    // Обработчик для инпута года (input событие)
    if (desiredYear) {
      desiredYear.addEventListener('input', updateZodiacSignInfo);
    }
 
    // Периодическое отслеживание изменений (включая программные)
    var lastValues = {
      day: daySelect.value,
      month: monthSelect.value,
      year: desiredYear ? desiredYear.value : null,
      era: desiredEra ? desiredEra.value : null,
      version: versionSelect.value
    };
 
    function pollChanges() {
      var day = daySelect.value;
      var month = monthSelect.value;
      var year = desiredYear ? desiredYear.value : null;
      var era = desiredEra ? desiredEra.value : null;
      var version = versionSelect.value;
 
      if (
        day !== lastValues.day ||
        month !== lastValues.month ||
        year !== lastValues.year ||
        era !== lastValues.era ||
        version !== lastValues.version
      ) {
        lastValues.day = day;
        lastValues.month = month;
        lastValues.year = year;
        lastValues.era = era;
        lastValues.version = version;
        updateZodiacSignInfo();
      }
    }
 
    setInterval(pollChanges, 300);
 
    // При загрузке страницы инициализируем вывод
    window.addEventListener('load', updateZodiacSignInfo);
  })();
</script>
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
26.07.2025, 12:50  [ТС]
как правильно сделать обновление элементов формы в полночь?

1. определить время до конца суток

2. за несколько милисекунд до полуночи, проверить, равна ли дата текущей, или другими словами, не совершает ли пользователь какие-то операции с формой...

3. если дата в селектах и инпуте равна текущей, в полночь автоматически обновить дату

4. если дата не равна текущей (пользователь что-то делает), обновить дату в кнопке сегодня (в спане center)

5. поскольку пользователь не будет находится на сайте более суток, обновить один раз, нет необходимости делать обновление спустя 24ч после первого обновления
Вложения
Тип файла: zip calend.zip (6.1 Кб, 0 просмотров)
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
27.07.2025, 07:53  [ТС]
krvsa,

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
var zodiacSigns = [
      {
        name: "Овен",
        symbol: "♈",
        ru: { rangeText: "21 марта — 20 апреля", startDay: 21 },
        classic: { rangeText: "21 марта — 19 апреля", startDay: 21 }
      },
      {
        name: "Телец",
        symbol: "♉",
        ru: { rangeText: "21 апреля — 21 мая", startDay: 21 },
        classic: { rangeText: "20 апреля — 20 мая", startDay: 20 }
      },
      {
        name: "Близнецы",
        symbol: "♊",
        ru: { rangeText: "22 мая — 21 июня", startDay: 22 },
        classic: { rangeText: "21 мая — 20 июня", startDay: 21 }
      },
      {
        name: "Рак",
        symbol: "♋",
        ru: { rangeText: "22 июня — 22 июля", startDay: 22 },
        classic: { rangeText: "21 июня — 22 июля", startDay: 21 }
      },
      {
        name: "Лев",
        symbol: "♌",
        ru: { rangeText: "23 июля — 22 августа", startDay: 23 },
        classic: { rangeText: "23 июля — 22 августа", startDay: 23 }
      },
      {
        name: "Дева",
        symbol: "♍",
        ru: { rangeText: "23 августа — 23 сентября", startDay: 23 },
        classic: { rangeText: "23 августа — 22 сентября", startDay: 23 }
      },
      {
        name: "Весы",
        symbol: "♎",
        ru: { rangeText: "24 сентября — 23 октября", startDay: 24 },
        classic: { rangeText: "23 сентября — 22 октября", startDay: 23 }
      },
      {
        name: "Скорпион",
        symbol: "♏",
        ru: { rangeText: "24 октября — 22 ноября", startDay: 24 },
        classic: { rangeText: "23 октября — 21 ноября", startDay: 23 }
      },
      {
        name: "Стрелец",
        symbol: "♐",
        ru: { rangeText: "23 ноября — 22 декабря", startDay: 23 },
        classic: { rangeText: "22 ноября — 21 декабря", startDay: 22 }
      },
      {
        name: "Козерог",
        symbol: "♑",
        ru: { rangeText: "22 декабря — 20 января", startDay: 22 },
        classic: { rangeText: "22 декабря — 19 января", startDay: 22 }
      },
      {
        name: "Водолей",
        symbol: "♒",
        ru: { rangeText: "21 января — 19 февраля", startDay: 21 },
        classic: { rangeText: "20 января — 18 февраля", startDay: 20 }
      },
      {
        name: "Рыбы",
        symbol: "♓",
        ru: { rangeText: "20 февраля — 20 марта", startDay: 20 },
        classic: { rangeText: "19 февраля — 20 марта", startDay: 19 }
      }
    ];
Такой массив нормально?

Добавлено через 4 минуты
voraa, в той форме для выбора даты, этот код корректно будет обновлять дату в селектах и инпуте?

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
    // Функция вычисления миллисекунд до следующей полуночи
    function msUntilNextMidnight() {
        var now = new Date();
        var nextMidnight = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1);
        return nextMidnight.getTime() - now.getTime();
    }
    
    // Функция, вызываемая в полночь
    function midnightUpdate() {
        var now = new Date();
        var isSelectedToday = (
            currentDate.getDate() === now.getDate() &&
            currentDate.getMonth() === now.getMonth() &&
            currentDate.getFullYear() === now.getFullYear()
        );
    
        if (isSelectedToday) {
            updateControls(now);
        } else {
            updateTodayButton();
            toggleTodayButtonVisibility();
        }
    }
    
    setTimeout(midnightUpdate, msUntilNextMidnight());
    })();
0
 Аватар для voraa
1249 / 1158 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
27.07.2025, 10:51
Цитата Сообщение от бел ка Посмотреть сообщение
voraa, в той форме для выбора даты,
Вы думаете я вот так должен вот так помнить все формы?
Возьмите и проверьте.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3823 / 1661 / 428
Регистрация: 14.03.2022
Сообщений: 4,168
27.07.2025, 14:10
Цитата Сообщение от бел ка Посмотреть сообщение
Такой массив нормально?
Как по мне - да.
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
27.07.2025, 21:48  [ТС]
есть как бы два разных скрипта, первый для выбора даты, второй для вывода актуального знака зодиака, так вот вопрос, если первый скрипт изменил дату программно, события в селектах и инпуте не срабатывает, как второму скрипту отслеживать подобные изменения?
0
 Аватар для voraa
1249 / 1158 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
27.07.2025, 22:16
Цитата Сообщение от бел ка Посмотреть сообщение
как второму скрипту отслеживать подобные изменения?
Никак. Либо переходить на React (но там тоже не просто меняешь значение, а меняешь состояние).
Либо просто первый скрипт должен как то после смены значения вызвать функцию из второго скрипта.
Как - не суть. Либо это прямой вызов, либо вызов по подписке (либо использовать библиотеку с подписками, либо самому реализовывать), либо генерить пользовательское событие...
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
28.07.2025, 00:45  [ТС]
voraa,

а если отслеживать изменения значений через `setInterval`.
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
(function() {
  var lastValues = {
    day: null,
    month: null,
    year: null,
    era: null
  };
  function checkDateChanges() {
    var day = document.getElementById('desiredDay').value;
    var month = document.getElementById('desiredMonth').value;
    var year = document.getElementById('desiredYear').value;
    var era = document.getElementById('desiredEra').value;
    if (day !== lastValues.day || month !== lastValues.month || year !== lastValues.year || era !== lastValues.era) {
      lastValues.day = day;
      lastValues.month = month;
      lastValues.year = year;
      lastValues.era = era;
      updateZodiacSignInfo();
    }
  }
  setInterval(checkDateChanges, 300);
})();
При программном изменении значений селектов или инпута, их `.value` изменится.
Периодически проверяем, изменились ли значения относительно предыдущих.
Если изменились — вызываем функцию обновления знака зодиака.
0
Эксперт .NET
 Аватар для Usaga
14127 / 9347 / 1350
Регистрация: 21.01.2016
Сообщений: 35,122
28.07.2025, 07:31
Цитата Сообщение от бел ка Посмотреть сообщение
а если отслеживать изменения значений через `setInterval`.
Это быдло-подход, который ещё и процессор нагружать будет.

Как надо делать выше написали довольно ясно.
0
 Аватар для voraa
1249 / 1158 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
28.07.2025, 09:06
Цитата Сообщение от бел ка Посмотреть сообщение
а если отслеживать изменения значений через `setInterval`.
Что сложного в генерации пользовательских событий?
В первом скрипте при смене значения у элемента

JavaScript
1
2
elem.value = 'Value'; // меняем значение
elem.dispatchEvent(new  CustomEvent("changevalue")); // вызываем событие, которое назвали "changevalue"
Во втором скрипте ловим это событие
JavaScript
1
2
3
elem.addEventListener("changevalue", function () {
   // Делаем что надо, когда значение изменилось
});
Добавлено через 25 минут
А можно и просто вызывать событие change при программной смене
В первом скрипте, когда программно меняем значение, программно вызываем событие 'change'
JavaScript
1
2
elem.value = 'Value'; // меняем значение
elem.dispatchEvent(new Event("change")); // вызываем событие "change"
Во втором скрипте ловим это событие. Оно будет вызываться и когда вводим руками и когда изменяем программно
JavaScript
1
2
3
elem.addEventListener("change", function () {
   // Делаем что надо, когда значение изменилось
})
Добавлено через 14 минут
Только надо учитывать, что dispatchEvent вызывает обработчик синхронно, без постановки в очередь событий. Так, как будто в этом месте был вызов функции обработчика. Если это не желательно, то dispatchEvent надо вызывать через setTimout
JavaScript
1
setTimeout(() => elem.dispatchEvent(new Event("change")), 0);
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
29.07.2025, 12:54  [ТС]
Usaga, этот вариант был предложен GPT...

Добавлено через 1 минуту
voraa, благодарю, будем с GPT пробовать исправить эти моменты...
0
 Аватар для voraa
1249 / 1158 / 178
Регистрация: 21.01.2024
Сообщений: 5,380
29.07.2025, 14:06
Цитата Сообщение от бел ка Посмотреть сообщение
будем с GPT пробовать исправить эти моменты...
Какие?
0
-11 / 6 / 0
Регистрация: 23.02.2023
Сообщений: 431
30.07.2025, 14:37  [ТС]
voraa, ну сначала надо исправить обновление при наступлении новых суток, а потом добавить генерацию пользовательских событий, чтобы второй скрипт ловил изменения в форме, когда пользователь ввёл дату за пределами диапазона, и при наступлении новых суток дата меняется программно, и их и должен отследить второй скрипт, и не только второй но и все остальные где требуется ввод даты...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
30.07.2025, 14:37
Помогаю со студенческими работами здесь

знак зодиака
Приветик. Помогите плиз написать сценарий, который по дате рождения человека определяет знак его...

Вывести соответствующий знак зодиака
Пользователь вводит дату рождения в виде строки: день-месяц-год. Ваша задача вывести...

Определить знак зодиака
У меня есть скрипт определяющий знак зодиака(через case of), проблема заключается в том, что у меня...

Как в спан вставить теперешний знак зодиака?
есть &lt;span id=&quot;zodiak&quot;&gt;&lt;/span&gt; как в него вставить какой сейчас знак зодиака, ♊ Близнецы&lt;br&gt;21...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
Новые блоги и статьи
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru