<body><form name="frm" action="reg.php" method="post" >用户名称:<input type="text" name="username" value=""/><span></span><br /><br />用户年龄: <input type="text" name="age" value=""/><span></span><br /><br />用户email:<input type="text" name="email" value=""/><span></span><br /><br />用户地址: <input type="text" name="address" value=""/><span></span><br /><br /><input type="submit" name="dosubmit" value="注册"/></form></body>//获取下一个节点function nextnode(obj){var next=obj.nextSibling;while(next.nodeName!='SPAN'){next=next.nextSibling;}return next;}//获取name对像var name=document.getElementsByName("username")[0];var namespan=nextnode(name);//获取焦点的时候做什么 name.onfocus= function (){namespan.innerText="请输入用户名在4到个8之间的字符串";namespan.className="normal";}
这是属性兼容问题导致的错误。在IE和FireFox浏览器中,DOM的nextSibling方法的使用存在部分差异:1. 在FireFox中,html标记中空行和换行会被当做节点来处理,所以会出现startNode.nextSibling取不到目标节点的情况,得到的元素反而是undefined或是nodeType为text的节点;2.解决方法是:判断startNode.nextSibling的nodeType类型: if(startNode.nextSibling.nodeType==3){brotherNode=startNode.nextSibling.nextSibling; //如果浏览器是FireFox}else{brotherNode=startNode.nextSibling; //如果浏览器是IE}