var tagInput = {
  isInited: false,
  init: init,
  bindEvent: bindEvent,
  addTag: addTag,
  removeTag: removeTag
};

tagInput.init();

function init() {
  var that = this;
  if (that.isInited) return;
  that.isInited = true;
  // 请修改这一行代码,保存class为js-input的输入框的dom元素引用
  that.input = document.querySelector('.js-input');
  // 存储父元素,方便添加节点
  that.tagInput = document.querySelector('.tag-input');
  that.bindEvent();
}

function bindEvent() {
  var that = this;
  var input = that.input;
  if (!input) return;
  input.addEventListener('keydown', function (event) {
    // 请修改这一行代码,判断用户是否按了回车键
    var isEnter = event.keyCode === 13;
    // 请修改这一行代码,判断用户是否按了删除键
    var isDelete = event.keyCode === 8;

    (isEnter || isDelete) && event.preventDefault();
    isEnter && that.addTag();
    isDelete && that.removeTag();
  });
  input.parentNode.addEventListener('click', function () {
    input.focus();
  });
}

function addTag() {
  var that = this;
  var input = that.input;
  const inputValue = input.value.trim();
  if (inputValue) {
    const node = document.createElement('span');
    node.innerText = inputValue;
    node.classList = 'tag';
    that.tagInput.insertBefore(node, input);
    input.value = '';
  }
}

function removeTag() {
  var that = this;
  var input = that.input;
  if (input.value) {
    input.value = input.value.substring(0, input.value.length - 1)
  } else {
    const prevSpan = that.input.previousElementSibling;
    prevSpan && prevSpan.parentNode.removeChild(prevSpan);
  }
}