马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 jincongno.1 于 2020-2-10 17:38 编辑 var checklist = document.getElementById("checklist");
var items = checklist.querySelectorAll("li");
var inputs = checklist.querySelectorAll("input");
for (var i = 0;i <items.length; i++) {
items[i].addEventListener("click",editItem);
inputs[i].addEventListener("blur",updateItem);//失焦的事件
inputs[i].addEventListener("keypress",itemKeypress);//键盘
}
function editItem() {
this.className = "edit";
var input = this.querySelector("input");
input.focus();//有了这个之后 点击之后他光标会到第一个字母前面去(获取焦点)
input.setSelectionRange(0,input.value.length); //该方法可以为当前元素内的文本设置被选中范围
}
function updateItem () {
this.previousElementSibling.innerHTML = this.value;
//previousElementSibling返回指定元素的前一个兄弟元素 innerHTML获取兄弟元素里面的值然后更改掉
//接下来关闭编辑模式
this.parentNode.className ="";
}
function itemKeypress (event) {
if (event.which === 13) {
updateItem.call(this);
}
}
想请问一下 我在itemKeypress函数中调用updateItem需要.call (this) 不然会报错
我试了不传this调用 他的this变成widows……
在 inputs i].addEventListener("blur",updateItem)里 有给updateItem传东西吗
有这么个疑惑。希望大佬指点
代码出处是小甲鱼老师搬运的web教学 js常用事件实战2
你这个只是绑定了一个事件啊,传值是没有的.单纯的调用你的function updateItem里面的this自然是指windows.只有调用call传你那个指定的this进去才能正常工作.
|