Javascript错误“;“未实施”;在IE8中
我在IE8 F12工具中遇到这个错误 我试图编写非结构化的验证代码,其中我将在body onload上调用validate()方法,它将根据其类名在元素的特定事件上附加验证代码。(例如,对于类为“required”的文本框,它将在其onblur上附加required() 这个错误的原因是什么 编辑 问题不在getElementsByCassName()方法中,因为它返回的元素数组带有所需的类,正如您在IE8中看到的那样Javascript错误“;“未实施”;在IE8中,javascript,Javascript,我在IE8 F12工具中遇到这个错误 我试图编写非结构化的验证代码,其中我将在body onload上调用validate()方法,它将根据其类名在元素的特定事件上附加验证代码。(例如,对于类为“required”的文本框,它将在其onblur上附加required() 这个错误的原因是什么 编辑 问题不在getElementsByCassName()方法中,因为它返回的元素数组带有所需的类,正如您在IE8中看到的那样 试试这个解决方案-我测试了它,它对您的代码片段有效(您必须使用他在“更新:
试试这个解决方案-我测试了它,它对您的代码片段有效(您必须使用他在“更新:”段落中编写的代码): 看起来IE8不支持
GetElementsByCassName
顺便说一句:这是一个使用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>
函数getElementsByClassName(节点,类名){
var a=[];
var re=new RegExp('(^ |)'+classname+'(|$);
var els=node.getElementsByTagName(“*”);
对于(var i=0,j=els.length;igetElementsByClassName
在IE8中不受支持
你可以试试或者。它更灵活,使用起来也很舒服
在您的情况下,它将是:
var a = document.querySelectorAll(".required");
您可以使用基本css选择器获取DOM元素,例如querySelector(“#ID.class”)
就像你在jQuery中所做的那样。可能是一个范围问题。你能猜到确切的位置吗?可能是tenhouse是对的。.他给出的链接很好。.试试看,该方法在那里,数组a被正确填充,现在我意识到问题是a[I]是DispHTMLInputElement类型,它没有onblur和onclick事件,正如我在IE的type列中看到的那样,无论如何,我可以将它转换为input元素吗?嘿,看到IE8 watch窗口的打印屏幕了吗?我真的不想使用jQuery,你在IE8中测试过它吗?玛莎:是的,在IE8中测试过它…如果它不工作,为什么不使用Christoph的解决方案?@Christoph奇怪…对我来说它不起作用:当然它不起作用了…在quirksmode
…介意添加一个doctype吗?:-Dwell,试试querySelectorAll
,看看这是否能解决你的问题…你有任何自定义插件或框架在运行吗?是的,它在IE8中起作用,但知道有什么方法使它在IE5(甚至IE7)中起作用吗-以防万一