getElementsByClassName不适用于IE6。我究竟做错了什么?

时间:2014-11-07 01:48:37

标签: javascript internet-explorer internet-explorer-6

我的脚本适用于IE7,8,9等,Chrome,Firefox,Safari等。但是当我在IE6上运行它时,它不起作用。这是一个计算函数,如下注与银行现金=转账。

我做错了什么?

这是working sample



var a, p = document.getElementsByClassName("preAmount");
var mark = new Array();

$(function () {
    $('input').each(function () {
        $(this).keyup(function () {
            var w = $(this).val(),
                n = w.indexOf("."),
                z = w.indexOf("0");
            //allow 2 digit decimal 
            if (n > 0 && (w.length - n) > 3) {
                $(this).val(parseFloat(w.substring(0, n) + w.substring(n, n + 3)));
            }
            //reset beginning with zero
            if (z == 0) {
                $(this).val(w * 1);
            }
            //set zero
            if (isNaN(w) || w.length == 0) {
                $(this).val("0");
            }
            calculateTotal($(this));
        });
    });
    $(".enableOnInput").click(function () {
        var submitValid = false;
        if (mark.length > 0) {
            for (k = 0; k < mark.length; k++) {
                // if one of the mark in array is true, it's valid to submit
                if (mark[k] == true) {
                    submitValid = true;
                    break;
                };
            }
        }
        if (submitValid) {
            window.open("success.html", "_self");
        } else {
            alert('您尚未更新游戏平台转帐资金!\n\nYou have not alter transfer amount!');
        }

    });
    $(".reset").click(function () {
        a = document.getElementsByClassName('namount');
        for (k = 0; k < a.length; k++) {
            a[k].value = parseFloat(p[k].innerHTML, 10);
        }
        $('.balance-value').text($('.t-right-title-balance').text());
        mark = new Array();
    });
});

function cal() {
    var ta = 0,
        tp = 0,
        tb = parseFloat($('.t-right-title-balance').text());
    a = document.getElementsByClassName('namount');
    for (j = 0; j < p.length; j++) {
        var ttp, tta;
        ttp = parseFloat(p[j].innerHTML);
        tta = parseFloat(a[j].value);
        tp += ttp;
        ta += tta;
        mark[j] = (ttp != tta); //set alter mark of each platform
    }
    return (tb + tp - ta);
}

function calculateTotal(src) {
    var sumtable = src.closest('.sumtable');
    sumtable.find('input').each(function () {
        var preAmount = $(this).parent().parent().find('.preAmount').text();
        var curAmount = this.value;
        if (!isNaN(this.value) && this.value.length != 0) {
            preAmount = parseFloat(preAmount);
            curAmount = parseFloat(this.value);
            var f = parseFloat($('.t-right-title-balance').text()).toFixed(2);
            var transAmount = curAmount - preAmount;
            if (curAmount < 0 || transAmount > f) {
                this.value = preAmount;
                $('.balance-value').text(f);
                return;
            } else {
                var b = parseFloat($('.balance-value').text());
                var tb = cal();
                if (tb >= 0) {
                    $('.balance-value').text(tb.toFixed(2));
                } else {
                    this.value = preAmount; //illegal rollback
                    $('.balance-value').text(tb.toFixed(2));
                    return;
                }
            }
        }
    });
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:1)

我不知道标记正确的答案,但这就是修复它的原因,

来自:@Phil - 我认为你在使用document.getElementsByClassName时遇到了一点麻烦(最低IE支持是v9)。请改用jQuery选择器,例如$(&#39; .namount&#39;)

答案 1 :(得分:0)

根据W3C: Internet Explorer 8 及早期版本不支持getElementsByClassName()方法。

我很确定这是对的。

<!DOCTYPE html>
<html>
<body>
<p class="demo">Test.</p>
<button onclick="myFunction()">Click me!</button>
<script>
      function myFunction() {
          document.getElementsByClassName('demo').innerHTMl = "Hallo!";
      }
</script>
</body>
</html>

您可以在Internet Explorer 6或5上试用。