0

在 IE8 F12 工具中出现此错误

我正在尝试编写不显眼的验证代码,其中我将在正文 onload 上调用 validate() 方法,它将根据其类名在元素的特定事件上附加验证代码。(例如,对于具有“必需”类的文本框,它将在其 onblur 上附加 required())

在此处输入图像描述

这个错误的原因是什么?

编辑

问题不在 getElementsByClassName() 方法中,因为它返回的元素数组具有所需的类,正如您在 IE8 手表中看到的那样

在此处输入图像描述

4

2 回答 2

0

试试这个解决方案 - 我对其进行了测试,它适用于您的代码段(您必须采用他在“更新:”段落中编写的代码):

javascript document.getElementsByClassName 与 IE 的兼容性

看起来getElementsByClassName在 IE8 中不支持。

顺便说一句:这是一个完美的例子,为什么你应该使用 jQuery - 因为你不会有这样的问题:)

编辑:我这样测试它:

<!DOCTYPE html>
<html>
    <head>
        <script type="text/javascript">

            function getElementsByClassName(node, classname) {
                var a = [];
                var re = new RegExp('(^| )'+classname+'( |$)');
                var els = node.getElementsByTagName("*");
                for(var i=0,j=els.length; i<j; i++)
                    if(re.test(els[i].className))a.push(els[i]);
                return a;
            }

            window.onload = function() {
                var a = getElementsByClassName(document.body,"required");

                for(var i = 0;i < a.length;i++)
                    a[i].onblur = function() { alert("blured")};
            };
        </script>
    </head>
    <body>
       <input class="required" type="text" name="uno" />
       <input class="required" type="text" name="duno" />
    </body>
</html>
于 2013-02-07T13:28:03.410 回答
0

getElementsByClassNameIE8 不支持。

你可以试试document.querySelectorAlldocument.querySelector。它更灵活,使用起来非常舒适。

在您的情况下,它将是:

var a = document.querySelectorAll(".required");

您可以使用基本的 css 选择器来获取 DOM 元素,就像querySelector("#ID .class")在 jQuery 中一样。

于 2013-02-07T13:33:48.280 回答