题解 | #设置标签#

设置标签

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];
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;
var tags = document.getElementsByClassName('tag');
var curInput = input.value.trim()
var allTagName = [];
[].forEach.call(tags, item=>{
allTagName.push(item.innerText.trim());
});
if (!curInput || allTagName.indexOf(curInput) !== -1) {
input.value = ''
return
}
var el = document.createElement('span');
el.classList.add("tag");
el.innerText = input.value.trim()
input.parentNode.insertBefore(el, input)
input.value = ''
}

function removeTag() {
var that = this;
var input = that.input;
if (input.value.trim() == '') {
var tags = document.querySelectorAll('.tag')
if(tags.length > 0 ){
tags[tags.length-1].remove()
}

}

}

全部评论

相关推荐

牛客29046817...:优化一下简历,突出重点,简历上的技能复习扎实,实习工作啥的整理成文档梳理一下怎么说要有自己的思考在里边,岗位的话运维,测试,开发,实施,技术支持能投的都投,多投递能找到的,秋招投递了3个月左右(8月中旬到11月下旬),boos打招呼8000多次,官网投递300多家,才找到一家满意的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务