js中可以直接使用元素id来.出方法,且能精准设置成功

        分享一下前两天发现的一个有趣的东西。

        众所周知,javascript可以通过 var ElementId = document.getElementById("id"); 来精准定位页面元素。这个方法会返回一个表示该元素的对象。

        但是!!!

        如果我们将  var ElementId = document.getElementById("id"); 这段代码注释掉,是否会报错?

        上码!

        function rightUName() {
            let userName = document.getElementById("userName");
            let rule = new RegExp("[a-zA-Z0-9_\u4e00-\u9fa5]{6,18}");
            let labr = document.getElementById("labr");
            // let labf = document.getElementById("labf");
            if (rule.test(userName.value)) {
                labr.style.display = "inline-block";

                labf.style.display = "none";
                labf.
                numU = 1;
            }
            else {
                labf.style.display = "inline-block";
                labr.style.display = "none";
                numU = 0;
            }
        }

          这个方法想实现的功能是获取输入框中的数据,判断是否正确,如果正确则绿勾元素显示,红色叹号元素隐藏,反之红色叹号显示,,绿勾隐藏。

        按照以往的逻辑,我们需要先定义变量来接收通过document.getElementById()方法返回的元素对象。但是,在这里我把 labf 变量声明与获取元素对象的代码注释掉了,理论上来说这里应该报错,实际上却没有报错,且能完美运行。

        查看 labf 的类型,出乎我的意料,labf 是any。

        什么是any类型?在 TypeScript 中,any类型用于表示任意类型,即不希望为其指定明确类型的值。在使用any类型时,编译器会忽略该值的类型检查。这意味着,可以将任何类型赋值给 any类型的变量,或从 any类型的变量中获取任何类型的值,而不会收到编译器的类型检查错误。

       既然这个值是any类型,那么为什么还能精准找到我们希望他定位的对象呢?

        我将我想要定位的对象的id设的值也是labf。如果我将前面的 labf 改变一下(比如改为labg),这个labf 在运行之后就不能精准定位到 id 为labf 的元素。因此,我猜测,这个labf是通过元素的 id 来精准定位到这个元素的。

        当然,这样能定位到准确的元素,也是因为当前页面其他元素的id没有一样的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值