Из названия этого вопроса я ожидал найти что-то вроде range()
, что позволило бы мне указать две даты и создать список со всеми датами между ними. Таким образом, не нужно рассчитывать количество дней между этими двумя датами, если заранее не знать об этом.
Таким образом, с учетом того, что он немного не по теме, этот однострочный лайнер выполняет работу :
import datetime
start_date = datetime.date(2011, 01, 01)
end_date = datetime.date(2014, 01, 01)
dates_2011_2013 = [ start_date + datetime.timedelta(n) for n in range(int ((end_date - start_date).days))]
Все кредиты для этого ответа !
Вот способ сделать это, используя tabindex
и focusout
:
let panel = document.getElementById('menuPanel'),
button = document.getElementById('menuButton');
button.onclick = checkPanelOn;
panel.addEventListener('focusout', function(event) {
if (panel.contains(event.relatedTarget)) {
return;
}
checkPanelOn(event);
});
function checkPanelOn(e) {
e.preventDefault();
if (panel.classList.contains('on')) {
panel.classList.remove('on');
} else {
panel.classList.add('on');
}
}
.on {
display: none;
}
<button id="menuButton">Menu</button>
<div id="menuPanel">
<ul>
<li tabindex="0">Name</li>
<li tabindex="0">Role</li>
<li tabindex="0">Profile</li>
<li tabindex="0">Management</li>
</ul>
</div>
<button>Outside button</button>