const dateByWeekNumber = (year, week) => {
// Cоздаём дату, гарантированно входящую в первую неделю.
const date = new Date(year, 0, 7);
// Откатываемся до первого четверга года
// По ГОСТ ИСО 8601-2001 первая неделя года должна содержать четверг
date.setDate(date.getDate() - (date.getDay() + 10) % 7);
// Переходим в нужную неделю
date.setDate(date.getDate() + (week - 1) * 7);
// Откатываемся до понедельника
date.setDate(date.getDate() - 3);
return date;
};
dateByWeekNumber(2023, 10);
// Date Mon Mar 06 2023 00:00:00 GMT+0300 (Москва, стандартное время)
dateByWeekNumber(2020, 1);
// Date Mon Dec 30 2019 00:00:00 GMT+0300 (Москва, стандартное время)
https://api.telegram.org/bot[ТОКЕН_БОТА]/sendMessage?chat_id=@[USERNAME_КАНАЛА]&text=тест
. После перехода по ссылке будет выведен id канала, сохрани его. https://api.telegram.org/bot[ТОКЕН_БОТА]/sendMessage?chat_id=@[ID_КАНАЛА]&text=тест.
data: () => ({
repeat: 0,
}),
<child-component v-for="i in repeat"></child-component>
<button @click="repeat++">add one more child component instance</button>
<ul>
<li class="list-group-item">Cras justo odio</li>
<li class="list-group-item">Dapibus ac facilisis in</li>
<li class="list-group-item">Morbi leo risus</li>
</ul>
let buttons = document.querySelectorAll('.list-group-item');
for (let button of buttons) {
button.onclick = function() {
button.style.backgroundColor = 'red';
}
}
data: () => ({
focused: false,
}),
<input @focus="focused = true" @blur="focused = false">
<span v-show="focused">FOCUSED</span>
return json_encode(["myResult" => "success"]);
axios.post('file.php', {table: 'users'})
.then(function (response) {
console.log(response.myResult);
})
.catch(function (error) {
console.log(error);
});
function getData() {
//...
return new Promise((resolve, reject) => {
xhr.onreadystatechange = function () {
if (xhr.readyState != 4) reject(xhr.statusText);
if (xhr.status != 200) {
reject(xhr.statusText);
} else {
resolve(xhr.responseText);
}
};
xhr.send();
});
}
// use
getData()
.then(function(response){
console.log('Its OK', response);
})
.catch(function(errorText){
console.log('Error:', errorText);
});
class Plugin {
constructor (rawUrl, rawName) {
this.url = new UrlParser(rawUrl);
this.name = new NameParser(rawName);
}
doSomething () {
// code
}
}
function userCode() {
new Plugin("example.com", "FooBar").doSomething()
}
class Plugin {
constructor (urlParser, nameParser) {
this.url = urlParser;
this.name = nameParser;
}
doSomething () {
// code
}
}
Plugin.init = function (url, name) {
return new Plugin(
new UrlParser(url),
new NameParser(name)
);
}
function userCode() {
Plugin.init("example.com", "FooBar").doSomething()
}
class UrlParser {
constructor (urlString) {
var result = this.matchUrlStrign(urlString)
this.anchor = result[0];
this.path = result[1];
// etc
}
}
this.url.anchor
list-group-item
:document.body.addEventListener('click', function(e) {
if( e.target.classList.contains('list-group-item'))
e.target.style.backgroundColor = 'red';
});
<body>
можно повесить слушателя ниже, например, на <ul>
, чтобы ловить события только в его дочерних элементах (и глубже).