var that
class Tab {
constructor(id) {
that = this
this.main = document.querySelector("#tab")
this.add = this.main.querySelector('.tabadd')
this.ul = this.main.querySelector(".nav ul:first-child")
this.fsection = this.main.querySelector('.tabscon')
this.init()
}
init() {
this.updateNode()
this.add.onclick = this.addTab
for (var i = 0; i < this.lis.length; i++) {
this.lis[i].index = i;
this.lis[i].onclick = this.toggleTab
this.remove[i].onclick = this.removeTab
this.spans[i].ondblclick = this.editTab
this.section[i].ondblclick = this.editTab
}
}
updateNode() {
this.lis = this.main.querySelectorAll('li')
this.section = this.main.querySelectorAll('section')
this.remove = this.main.querySelectorAll('.icon-guanbi')
this.spans = this.main.querySelectorAll('.nav li span:first-child')
}
toggleTab() {
that.clearClass()
this.className = 'liactive'
that.section[this.index].className = 'conactive'
}
clearClass() {
for (var i = 0; i < this.lis.length; i++) {
this.lis[i].className = ''
this.section[i].className = ''
}
}
removeTab(e) {
e.stopPropagation()
var index = this.parentNode.index
that.lis[index].remove()
that.section[index].remove()
that.init()
if (document.querySelector('.liactive')) return
if (index !== 0) {
index--
}
that.lis[index] && that.lis[index].click()
}
addTab() {
that.clearClass()
var li = '<li class="liactive"><span> 新选项卡</span><span class="iconfont icon-guanbi"></span></li>'
var section = '<section class="conactive">新测试项</section>'
that.ul.insertAdjacentHTML('beforeend', li)
that.fsection.insertAdjacentHTML('beforeend', section)
that.init()
}
editTab() {
var str = this.innerHTML
this.innerHTML='<input type="text"/>'
var input = this.children[0]
input.value = str
input.select()
input.onblur = function(){
this.parentNode.innerHTML = this.value
}
input.onkeyup = function(e){
if(e.keyCode===13){
this.blur()
}
}
}
}
new Tab('#tab')