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.getElementsByClassName('js-input')[0];
    that.bindEvent();
}

function bindEvent() {
    var that = this;
    var input = that.input;
    window.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(e) {

  let _self = this
  let tmp = _self.input.value
  if (tmp.length < 1) return
  let parentNode = document.getElementsByClassName('tag-input')[0]
  let ele = document.createElement('span')
  ele.className = 'tag'
  ele.innerText = _self.input.value
  let box = document.getElementsByClassName('js-input')[0]
  parentNode.insertBefore(ele, box)
  _self.input.value = ''
}

function removeTag(e) {
  let _self = this
  if (_self.input.value.length<1){
    let tags = document.getElementsByClassName('tag')
    if(tags.length>0) {
      tags[tags.length-1].remove()
    }
  } else {
    let tmp = _self.input.value
    _self.input.value = ''
    for (let i=0,imax=tmp.length - 1; i<imax; i++) {
      _self.input.value += tmp[i]
    }
  }
}