我希望有人能帮助我创建一个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;
在所有浏览器上工作,感谢大家的帮助!