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

javascript作用区域不理解的地方请教。

javascript作用区域不理解的地方请教。

ABOUTYOU 2019-04-08 11:17:08
```javascript/*df是inport输入的内容第5次修改$("#name").blur(function(){alert(function(){name.val()});//function(){email.val()}alert(name.value);//undefinedalert($('#name').val());//dfalert($('#name').value);//undefinedalert(this.value);//dfalert(function(){this.val()});//function(){this.val()}alert($(this).value);//undefinedalert($(this).val());//df});varemail=$("#email");email.val=email.val();email.blur(function(){alert("email")alert(function(){email.val()});//function(){email.val()}alert(email.value);//undefinedalert(email.val);//没有输出...alert("$('#email')")alert($('#email').val());//dfalert($('#email').val);//JQalert($('#email').value);//undefinedalert("this")alert(function(){this.val()});//function(){this.val()}alert(this.value);//dfalert(this.val);//undefinedalert($(this).val);//JQ});```alert(email.val);没有输出是不是email也是新的对象?
查看完整描述

2 回答

?
DIEA

TA贡献1820条经验 获得超2个赞

这跟作用域完全没有关系,是因为你没搞清楚jQuery对象和原生DOMnode的区别。
$('#email')和document.getElementById('email')是不一样的,前者是包裹了原生node对象的jQuery对象,后者是才一个原生的node对象。
.val()是只有jQuery对象才具有的方法,而.value是一个原生的inputnode才具有的属性。这就是为什么$('#email').value是undefined。
需要注意的是document.getElementById('email')每次返回的都是同一个node,而每次运行$('#email'),都会创建并返回一个新的jQuery对象,只是这些jQuery对象包裹的是同一个node。也就是说你的第一个email变量和后来的$('#email')不是同一个对象,所以你在后者身上自然找不到存在前者身上的val这个属性。
                            
查看完整回答
反对 回复 2019-04-08
  • 2 回答
  • 0 关注
  • 327 浏览
慕课专栏
更多

添加回答

举报

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