js不用获取id属性, 直接可以用id名做事件绑定

以下用一个实际栗子说明问题:

// 定义两个输入框, 输入两个整数, 获取其最大公约数和最小公倍数

标签内代码:

 <body>
    <div class="root">
        <input type="text" id="one">
        <input type="text" id="two">
        <button id="btn"></button>
        <div id="put"></div>
    </div>
</body>

js代码:

// 不用id绑定 btn和put
btn.onclick = function () {
    var oneEL = document.getElementById('one').value;
    var twoEL = document.getElementById('two').value;
    var max = 0, min = 0;
    oneEL > twoEL ? max = oneEL : max = twoEL;
    oneEL < twoEL ? min = oneEL : min = twoEL;
    // divisor
    var divisor = 0;
    for (var i = 1; i <= min; i++) {
        if (oneEL % i == 0 && twoEL % i == 0) {
            divisor = i;
        }
    }
    // multiple
    var multiple = 0;
    for (var i = max; i <= oneEL * twoEL; i++) {
        if (i % oneEL == 0 && i % twoEL == 0) {
            multiple = i;
            break;
        }
    }
    put.innerHTML = ('最大公约数为: ' + divisor + '最小公倍数为: ' + multiple);
}
// 用id绑定 btn和put
// 绑定后btn--btnEL, put--putEL
var btnEL = document.getElementById('btn');
var putEL = document.getElementById('put');
btnEL.onclick = function () {
    var oneEL = document.getElementById('one').value;
    var twoEL = document.getElementById('two').value;
    var max = 0, min = 0;
    oneEL > twoEL ? max = oneEL : max = twoEL;
    oneEL < twoEL ? min = oneEL : min = twoEL;
    // divisor
    var divisor = 0;
    for (var i = 1; i <= min; i++) {
        if (oneEL % i == 0 && twoEL % i == 0) {
            divisor = i;
        }
    }
    // multiple
    var multiple = 0;
    for (var i = max; i <= oneEL * twoEL; i++) {
        if (i % oneEL == 0 && i % twoEL == 0) {
            multiple = i;
            break;
        }
    }
    putEL.innerHTML = ('最大公约数为: ' + divisor + '最小公倍数为: ' + multiple);
}

二者得到结果相同
(二者得到结果相同)

其中, 不进行id绑定时, 进行了鼠标点击事件(onclick)和输入事件(innerHTML)时, 也同样可以执行成功!
二者得到结果相同, 由此可知, js获取id属性时, 可以不获取, 直接进行事件绑定!

深层原因:
为什么可以不获取?
HTML5规范文档规定: 若一个元素符合下面两条规则中的任一条,则window对象中必须要有与之对应的一个属性,属性值就是这个对象.

1.如果一个元素拥有ID属性,那么ID属性的属性值就会成为window对象的属性名.
2.如果一个元素拥有name属性,那么name属性的属性值就会成为window对象的属性名.但这个元素的标签名必须是: a, applet, area, embed, form, frame, frameset, iframe, img, object,其中的一个.
故满足此二者条件的id属性可以在不获取时直接进行使用.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值