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);
}
第三点:又因为获取元素的方式querySelector
与getElementByClassName
都有兼容性问题,因此选择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);
})
添加回答
举报