为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

erutdioup8556 2016-09-20 09:17:34
// $('.inputw').on('keyup', function(event) { ("inputw"); obj.addEventListener("keydown",functon(event){ })
查看完整描述

4 回答

?
小熊软偶

TA贡献17条经验 获得超55个赞

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

//img1.sycdn.imooc.com//57e1021700017f4808550611.jpg

查看完整回答
1 反对 回复 2016-09-20
?
bwin

TA贡献4条经验 获得超0个赞


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

value?

查看完整回答
反对 回复 2016-09-20
?
stone310

TA贡献361条经验 获得超191个赞

这个写的问题挺多的,一些写错的都注释了,一个重要的错误如下:

 先看这个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>时回调它本身
    }
}


查看完整回答
反对 回复 2016-09-20
?
MarlboroKay

TA贡献189条经验 获得超236个赞

首先,你的代码:

var obj=document.getElementByClassName("inputw");

貌似少了个s,我一般用的都是下面这种

var obj=document.getElementsByClassName("inputw");

其次,getElementsByClassName()是HTML5 新增的DOM API。IE8以下不支持。

你可以在 函数开头添加一条判断

if(!document.getElementsByClassName) return false;

如果函数直接退出,则说明不支持

getElementsByClassName()

希望能帮到你,望采纳!

查看完整回答
反对 回复 2016-09-20
  • 4 回答
  • 0 关注
  • 2316 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信