IE上的Javascript onchange、onmouseup、onkeypress等.请提供帮助

Javascript onchange, onmouseup, onkeypress etc on IE. Help pls

本文关键字:帮助 onmouseup 上的 Javascript onchange IE onkeypress      更新时间:2024-01-07

我希望有人能帮助我创建一个HTML表单,该表单包含class="takings"的10个数字输入字段。理想情况下,我想在每个的onchange事件上附加一个JS函数,但如果必须的话,我会选择onmouseup或类似的函数。以下是从外部js文件调用的:

  function init(){
   var input = document.getElementsByClassName("takings"); 
    for (var i = 0; i < input.length; i++) { 
   input[i].onchange = function()
   {
    alert('testing');
   }
   input[i].value = 0.00; 
}
}
window.onload=init;

我已经在firefox和chrome上测试了这段代码,它运行得很好。然而,它在IE上不起作用(到目前为止,我已经测试了IE8和IE11)。我需要让这个应用程序在IE中运行,因为它是我们公司网络上唯一使用的浏览器。由于其他依赖关系的变化,它甚至不是一个选项。我确实短暂地想到,我们可能有一些组策略阻止了一些浏览器功能,但同样的行为发生在我们的域之外。有人能告诉我哪里出了问题,或者在IE上实现同等功能的方法吗?

非常感谢

*****更新**********

function init(){
   var input = document.querySelectorAll(".takings"); 
    for (var i = 0; i < input.length; i++) { 
   input[i].attachEvent("onchange", function () {alert('testing');}); 
   input[i].value = 0.00;
} 
}

此代码仅适用于ie8,而不适用于ff或ie11

对于ie,必须使用attachEvent。当元素失去焦点时,就会触发onchange。你可以试着按一下键来解决它。

尝试

 document.querySelectorAll(".takings"); 

而不是

document.getElementsByClassName("takings"); 

querySelectorAll()方法支持单词上的IE9

更多参考这个,这个

更新

我们可以在IE6,7,8中使用getElementsByClassName()。stackoverflow中已经有关于这个主题的讨论,所以如果你想做这样的事情,那么请参考这个

    function getsum(){
    var total = 0;
    var fields = $('.takings');
    for (i = 0; i < fields.length; i++) {
    total += parseFloat(fields[i].value);
    }
    var label = document.getElementById("TotalLabel");
    label.innerHTML = total;
 }

function init(){
 $('.takings').change(function(){getsum()});
}
window.onload=init;

在所有浏览器上工作,感谢大家的帮助!