У меня есть функция, в которой я хотел получить номер недели сегодняшней даты, но я не могу напечатать значение в своем текстовом поле при нажатии кнопки. Я новичок в javascript, и я отлаживал его в течение нескольких недель. Пожалуйста помоги
function getWeekNumber(d) {
d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay()||7));
var yearStart = new Date(Date.UTC(d.getUTCFullYear(),0,1));
var weekNo = Math.ceil(( ( (d - yearStart) / 86400000) + 1)/7);
return [d.getUTCFullYear(), weekNo];
document.getElementById("week").value = getWeekNumber(new Date());
}<td>WEEK: </td>
<td><input type = "text" value= "" style= "width: 230px; padding-left: 3px" id = "week" name = "week"></td>
<input type = "button" value = "Get Week" onclick= "getWeekNumber()">Это мой ссылочный код stackoverflow.com/questions/6117814/…
так? правильно используйте код в этом ответе - к счастью, вы также возвращаетесь до конца функции, так как вы получите бесконечную рекурсию



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Во-первых, ваша функция "getWeekNumber()" требует параметр d при вызове, но когда вы вызываете ее при нажатии кнопки ввода, вы не даете ей такого параметра. Я думаю, скорее, вам следует настроить прослушиватель событий при нажатии кнопки ввода, а оттуда вы должны вызвать функцию getWeekNumber() и передать ей «новую дату()» в качестве параметра d, чтобы это выглядело как ниже код, где я добавил прослушиватель событий.
Вы также вызывали саму функцию изнутри, но делали это после оператора return, который был излишним. Вместо этого вы должны получить результат weekNo и присвоить ему innerHTML некоторого div, как это сделал я. Я не думаю, что вам следует пытаться заполнить поле ввода, так как это не кажется обычным. Я изменил его на div, чтобы упростить процесс:
let get_week_button = document.getElementById("get_week");
get_week_button.addEventListener("click", function() {
getWeekNumber(new Date());
});
function getWeekNumber(d) {
d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate()));
d.setUTCDate(d.getUTCDate() + 4 - (d.getUTCDay() || 7));
var yearStart = new Date(Date.UTC(d.getUTCFullYear(), 0, 1));
var weekNo = Math.ceil((((d - yearStart) / 86400000) + 1) / 7);
document.getElementById("week").value = weekNo;
}<td>WEEK: </td>
<td>
<input type = "text" value= "" style= "width: 230px; padding-left: 3px" id = "week" name = "week">
</td>
</tr>
<input id = "get_week" type = "button" value = "Get Week">Но мне нужно было, чтобы значение было в текстовом поле @Musilix
Хорошо, если это то, что вам действительно нужно, я отредактировал код, чтобы признать это. Я просто изменил div, который я сделал, на элемент ввода, который вы использовали, и вместо установки innerHTML я установил его атрибут value.
Все еще не могу заставить его работать. Я что-то пропустил с этим? <script src = "ajax.googleapis.com/ajax/libs/jquery/3.3.1/…> <script src = "maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/…> <script type='text/javascript' src='code.jquery.com/jquery-1.11.0.js'></…
Это работает в приведенном выше фрагменте. Убедитесь, что ваши js и html указаны в отдельных файлах с правильными расширениями, и убедитесь, что теги script правильно установлены в файле html для ссылки на файл js. Нет необходимости в jQuery, это ванильный js; если вы не используете jQuery для чего-то еще в вашем файле.
вы называете
function getWeekNumber(d)какgetWeekNumber()так чтоdне определено ... что это должно быть?