|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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进去才能正常工作.
|
|