题解 | #设置标签#

设置标签

http://www.nowcoder.com/practice/b164e87713804e1ab46cf7a84936b6ba

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];
    var tags = Array.from(document.getElementsByClassName('tag'));
    var tags_len = tags.length;
    that.tags_name = [];
    for (var i=0;i<tags_len;i++){
        that.tags_name.push(tags[i].innerText);
    }
    that.bindEvent();
}

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

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

function addTag() {
    var that = this;
    var val = that.input.value.trim();
    console.log(that.tags_name);
    if (val && that.tags_name.indexOf(val) == -1) {
        that.input.insertAdjacentHTML('beforeBegin', '<span class="tag">'+val+'</span>');
        that.tags_name.push(val);
    }
    that.input.value = '';
}

function removeTag() {
    var that = this;
    var val = that.input.value.trim();
    if (!val) {
        var prev = that.input.previousSibling;
        if (prev) {
            that.input.parentNode.removeChild(prev);
        }
    }
}
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务