猿问

红色框jq代码转js代码(粉红色框)有错,怎么修改呢?

//			$('.inputw').on('keyup', function(event) {
	("inputw");
obj.addEventListener("keydown",functon(event){

})

erutdioup8556
浏览 2373回答 4
4回答

小熊软偶

这是我写个一个小demo,可能你也是这种原因造成,希望对你有所帮助,下面附有我截的图片

bwin

if(this.val==""&&evt.keyCode ==8)value?

stone310

这个写的问题挺多的,一些写错的都注释了,一个重要的错误如下: 先看这个JQ:$(this).prev('input').focus();这个意思是获取this的前一个并且标签名为<input>的同胞元素让它获取焦点;再看这个JS:this.previousSbiling.focus();意思是获取this的前一个同胞元素(包括文本元素)并且让它获取焦点;这两个明显不是一个意思;像这种JS写法,只有这么写才能获取到:<input><this>   //只能这么写 <input>         //这么写会报错,因为这写会获取到文本元素 <this>而JQ的写法以上两种都能获取;所以用JS方法写,要让它判断前一个函数是否是<input>节点而不是文本节点;var obj = document.getElementsByClassName("inputw")[0]; //Element加上s,这个获取的是个类数组,要加下标[0],如果有多个要绑定事件,则要遍历 obj.addEventListener("keydown", function (event) {       //function写错了     var evt = event || window.event;     if (this.value == "" && evt.keyCode == 8) {    //value,不是val,val是JQ写法         var prev = this.previousSibling         eleFocus(prev)     } }) function eleFocus(a) {     if ( a.nodeName=="INPUT") {   //判断是否<input> 这里"INPUT"是大写         a.focus()     } else {         a = a.previousSibling         eleFocus(a)      //不是<input>时回调它本身     } }

MarlboroKay

首先,你的代码:var obj=document.getElementByClassName("inputw");貌似少了个s,我一般用的都是下面这种var obj=document.getElementsByClassName("inputw");其次,getElementsByClassName()是HTML5 新增的DOM API。IE8以下不支持。你可以在 函数开头添加一条判断if(!document.getElementsByClassName) return false;如果函数直接退出,则说明不支持getElementsByClassName()希望能帮到你,望采纳!
随时随地看视频慕课网APP
我要回答