扫码关注官方订阅号
的回答了。我就想评论一句,问题就算很容易,也不应该随意踩问题。谁没有一段初学的
欢迎选择我的课程,让我们一起见证您的进步~~
拼写错误,应该是getElementsByClassName你少了个s
另外getElementsByClassName获得的是nodeList对象,无法直接绑定事件
假设你的需求是这样的
<input type="text" class="inputw"> <input type="text" class="inputw"> <input type="text" class="inputw"> var inputtwArr = document.querySelectorAll(".inputw"); for(var i = 0, j = inputtwArr.length; i < j; i++) { (function( i ){ inputtwArr[i].addEventListener("keyup", function(e) { if(this.value !== "" && this.nextSibling.nextElementSibling ) { this.nextSibling.nextElementSibling.focus(); return false; } }) })(i); } var obj=document.getElementsByClassName("inputw"); obj[1].addEventListener("keydown",function(event){ var evt=event||window.event; if(this.value=="" && evt.keyCode == 8){ this.previousElementSibling.focus(); } })
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <input type="text" class="inputw"> <input type="text" class="inputw"> <input type="text" class="inputw"> <script> [].slice.call(document.getElementsByClassName('inputw'),0) .forEach(function(el){ var addEvent = 'attachEvent' in el ? 'attachEvent' : 'addEventListener'; var eventName = 'attachEvent' in el ? 'onkeydown' : 'keydown'; el[addEvent](eventName,function(ev){ var evt = ev || window.event; var pr = el.previousElementSibling || el.previousSibling; var value = el.value; var key = event.which || event.charCode || event.keyCode; if(pr.focus && el.value === "" && +key === 8){ pr.focus(); } },false); }); </script> </body> </html>
https://jsfiddle.net/L24vrvfu/
function keydown(e) { var e = e || window.event; if (e.keyCode === 8) { // e.target 就是触发事件那个控件 var prev = e.target.previousSibling; // prev 有可能是 #text,就是两个 input 之间的空白字符, // 其 nodeType 是 3,这种情况下要继续往前找 while (prev && prev.nodeType === 3) { prev = prev.previousSibling; } // 有可能是第一个 input,没有 prev if (prev) { prev.focus(); } } } var inputs = document.getElementsByClassName("inputw"); // 自己写循环绑定事件, // inputs 是个伪数组,不能直接用 .forEach(), // 虽然可以用 [].forEach.call(),但这里加个事件而已,没必要 for (var i = 0; i < inputs.length; i++) { inputs[i].addEventListener("keydown", keydown); }
顺便说一下,你的拼写错误太多了
getElementByClassName -> getElementsByClassNamefuncton -> functionpreviousSbiling -> previousSibling
getElementByClassName
getElementsByClassName
functon
function
previousSbiling
previousSibling
打字要仔细啊,有时候拼写错误要害死人
getElementsByClassName拼写错误,你少写了个s
getElementsByClassName返回的是一个NodeList,获取其中的节点方法跟获取数组中某一项一样,所以绑定事件应该是obj[0].addEventListener或者这样获取getElementsByClassName("xxx")[0]
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
拼写错误,应该是getElementsByClassName你少了个s
另外getElementsByClassName获得的是nodeList对象,无法直接绑定事件
假设你的需求是这样的
https://jsfiddle.net/L24vrvfu/
顺便说一下,你的拼写错误太多了
getElementByClassName->getElementsByClassNamefuncton->functionpreviousSbiling->previousSibling打字要仔细啊,有时候拼写错误要害死人
getElementsByClassName拼写错误,你少写了个s
getElementsByClassName返回的是一个NodeList,获取其中的节点方法跟获取数组中某一项一样,所以绑定事件应该是obj[0].addEventListener或者这样获取getElementsByClassName("xxx")[0]