日期:2014-05-16  浏览次数:20418 次

javascript中遇到的问题
通过nextSibling.nodeName来获得下一个标签的名称,但是失败了,找不出原因,望高手能帮忙解决,谢谢!
HTML文件
<html>
<head>
<title></title>
  <script src="js/check.js"></script>
  <style>
  #main{
position:absolute;
top:50%;
left:50%;
margin:-150px 0 0 -200px;
width:400px;
height:300px;
border: #aaa solid 1px;
}
  </style>
</head>
<body>
<form action="login.php" method=post>
  <div id="main">
<table width="400px" height="250px" align="center">
<caption>用户注册</caption>
<tr>
<td width="100px">用户名:</td>
<td><input type="text" name="uid" value=""size="20"></td>
  <td width="100px"> <span>请输入用户名</span></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="pwd" size="20" value=""></td>
  <td><span>请输入密码</span></td>
  </tr>
<tr>
<td>确认密码:</td>
<td><input type="password" name="rpwd" size="20"></td>
  <td><span>请再次输入密码</span></td>
</tr>
  <tr>
  <td>性别:</td>
  <td><input type="radio" name="sex" value="male" checked>男&nbsp;&nbsp;<input type="radio" name="sex" value="female">女</td>
  <td></td>
  </tr>
  <tr>
  <td>电子邮箱</td>
  <td><input type="text" name="email"</td>
  <td><span>请输入电子邮箱</span></td>
  </tr>
  <tr>
  <td></td>
  <td><input type="submit" name="sub" value="提交"></td>
  </tr>
  </table>
  </div>
</form>
</body>
</html>
js文件
onload=function(){
var uid=document.getElementsByName("uid")[0];
var pwd=document.getElementsByName("pwd")[0];
var rpwd=document.getElementsByName("rpwd")[0];
var sex=document.getElementsByName("sex")[0];
var email=document.getElementsByName("email")[0];
alert(uid.nextSibling.nodeName);
}
谢谢,有点急!

------解决方案--------------------
uid没有nextSibling了,所以你是找不到的啊

另外,nextSibling也可能是空格,等不可见字符,严格的查找方法是
while(xx.nextSibling.nodeType!=1)
xx=xx.nextSibling;

nextSibling代表是同级的、后面的兄弟节点
------解决方案--------------------
使用jquery多省事
------解决方案--------------------
span不是uid的nextSibling,

应该是

var uid=document.getElementsByName("uid")[0];
span=uid.parentNode.nextSibling.getElementsByTagName("span")[0]
------解决方案--------------------