IE8中的Javascript错误“未实现”

时间:2013-02-07 13:20:05

标签: javascript

在IE8 F12工具中出现此错误

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

enter image description here

出现此错误的原因是什么?

修改

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

enter image description here

2 个答案:

答案 0 :(得分:0)

尝试此解决方案 - 我测试了它并且它适用于您的代码段(您必须使用他在“更新:”段落中编写的代码):

javascript document.getElementsByClassName compatibility with IE

IE8中似乎不支持getElementsByClassName

顺便说一句:这是一个很好的例子,为什么你应该使用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>

答案 1 :(得分:0)

IE8中不支持

getElementsByClassName

您可以尝试document.querySelectorAlldocument.querySelector。使用起来更灵活,更舒适。

在你的情况下,它将是:

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

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