阿里前端筆試題
阿新 • • 發佈:2019-02-09
// 此處也可換成ES6的寫法
class Contact{
constructor(rootId) {
this.data = [];
this.root = document.getElementById(rootId);
this.ids = [];
this.names = [];
this.sexs = [];
this.tels = [];
this.provinces = [];
this .evts = [];
}
initData(){
this.lis = this.root.querySelectorAll('li');
this.ids = this.getDataArr(this.root.querySelectorAll('.id'));
this.names = this.getDataArr(this.root.querySelectorAll('.name'));
this.sexs = this.getDataArr(this.root.querySelectorAll('.sex' ));
this.tels = this.getDataArr(this.root.querySelectorAll('.tel'));
this.provinces = this.getDataArr(this.root.querySelectorAll('.province'));
this.loadDataFromArr();
this.initEvent();
}
loadDataFromArr() {
let len = this.ids.length;
for (let i = 0; i < len ;i++) {
let obj = {
id:this.ids[i],
name:this.names[i],
sexs: this.sexs[i],
tels: this.tels[i],
provinces: this.provinces[i]
};
this.addItem(obj);
}
}
getDataArr(arr){
let dataArr = [];
for(let i = 0; i < this.lis.length; i++) {
dataArr.push(arr[i].textContent);
}
return dataArr;
}
addItem(item) {
this.data.push(item);
}
initEvent() {
this.evts = this.root.querySelectorAll('.del');
this.handleDel = this.handleDel.bind(this);
for(let i = 0; i < this.evts.length; i++) {
this.evts[i].onclick = this.handleDel;
}
}
handleDel(event) {
this.lis = this.root.querySelectorAll('li'); // update
this.evts = this.root.querySelectorAll('.del');
for(let i = 0 ;i < this.lis.length ; i++) {
if(event.target === this.evts[i]) {
console.log(this.lis[i],this.evts[i]);
this.delItem(i,this.lis[i]);
}
}
}
delItem(index,target){
console.log(index);
this.data.splice(index+1,1);
this.root.removeChild(target);
}
}
let contact = new Contact('J_List');
contact.initData();