Редуване на атрибути без стойности

Нека имаме блокирано поле за въвеждане и бутон:

html<input id="elem" disabled>
<input id="button" type="submit">

Нека направим така, че всяко натискане на бутона да води до промяна на състоянието на полето - от блокирано на отблокирано и обратно. Първо, нека получим препратки към нашите елементи в променливи:

javascriptlet elem   = document.querySelector('#elem');
let button = document.querySelector('#button');

А сега нека реализираме замисленото:

javascriptbutton.addEventListener('click', function() {
  if (elem.disabled) {
    elem.disabled = false;
  } else {
    elem.disabled = true;
  }
});

Задачата, обаче, може да бъде решена с по-малко код:

javascriptbutton.addEventListener('click', function() {
  elem.disabled = !elem.disabled;
});
Задание 1

Обяснете как работи дадения код.

Задание 2

Дадени са отметка и бутон. Направете така, че всяко кликване върху бутона да води до промяна на състоянието на отметката.