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

HTML怎么自动计算出上两行的值在第三行里面?

HTML怎么自动计算出上两行的值在第三行里面?

临摹微笑 2018-11-14 17:13:08
怎么用原生js实现将上两行的数据经过计算自动填充到第三行?谢谢!
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

如果使用原生js的话,需要做的工作就稍微有点多了。一步一步来吧。

第一点;首先要明确需要绑定什么事件。实时监听的话,给input绑定change事件是不行的。绑定的change事件如果我没记错的话需要在input失去焦点生效。因此这个时候,我们需要绑定一个叫做input的事件来完成实时监听,但是,在IE9以下,input事件不支持,而支持的是另外一个叫做propertychange的事件。

第二点:事件绑定在大多数浏览器是支持的addEventListener,但低版本IE仅支持的是attachEvent,因此需要一个事件绑定的兼容处理。

function addEvent(elem, eventtype, handler) {

    elem.addEventListener ? addEventListener(eventtype, handler, false) : elem.attachEvent('on' + eventtype, handler);

}

第三点:又因为获取元素的方式querySelectorgetElementByClassName都有兼容性问题,因此选择getElementById来获取元素。

完整代码如下!

var input_1 = document.getElementById('input_1');

var input_2 = document.getElementById('input_2');

var result = document.getElementById('result');


function changeHandler() {

    var value_1 = parseInt(input_1.value || 0);

    var value_2 = parseInt(input_2.value || 0);


    result.value = value_1 + value_2;

}


function addEvent(elem, eventtype, handler) {

    elem.addEventListener ? addEventListener(eventtype, handler, false) : elem.attachEvent('on' + eventtype, handler);

}


// input IE9一下不支持,因此需要额外绑定一个

['input', 'propertychange'].forEach(function(event) {

    addEvent(input_1, event, changeHandler);

    addEvent(input_2, event, changeHandler);

})


查看完整回答
反对 回复 2018-12-27
  • 1 回答
  • 0 关注
  • 435 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号