在IE8 F12工具中出现此错误
我正在尝试编写不引人注意的验证代码,其中我将在body onload上调用validate()方法,并且它将根据其类名称附加元素的特定事件的验证代码。 (例如,对于带有“必需”类的文本框,它将在其onblur上附加required())
出现此错误的原因是什么?
修改
问题不在于getElementsByClassName()方法,因为它返回了需要类的元素数组,正如您在IE8手表中看到的那样
答案 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)
getElementsByClassName
。
您可以尝试document.querySelectorAll
或document.querySelector
。使用起来更灵活,更舒适。
在你的情况下,它将是:
var a = document.querySelectorAll(".required");
您可以使用基本的css选择器来获取您的DOM元素,例如querySelector("#ID .class")
,就像在jQuery中一样。