我在2个div元素中有2个span元素。两个span元素都没有id,两个div元素也没有id。
第一个div的第一个输入元素带有一个id(id_name),然后是第一个span元素。
第二个div的第二个输入元素带有一个id(id_password),然后是第二个span元素。
我有一个javascript函数,我在提交表单时调用。在该函数内部,我可以在变量 element_id_name 中获取第一个输入元素,在变量 element_id_password 中获取第二个输入元素。现在我如何获得第一个输入元素之后的第一个span元素?如何获得第二个输入元素之后的第二个span元素?由于我没有span元素的id,我不能使用document.getElementById()
。有没有办法通过引用第一个输入元素获得第一个span元素?
这是我的代码:
<html>
<head>
<meta charset="ISO-8859-1">
<title>test</title>
<style type="text/css">
.error_noshow{
display: none;
}
.error_show{
color: red;
}
</style>
<script type="text/javascript">
function validate() {
var element_id_name = document.getElementById("id_name");
var element_id_password = document.getElementById("id_password");
return false;
}
</script>
</head>
<body>
<form id="form_login" method="post" action="" onsubmit="validate();">
<div>
<label for="id_name">User Name:</label>
<input type="text" id="id_name" name="txt_user_name">
<span class="error_noshow">Required field</span>
</div>
<div>
<label for="id_password">Password:</label>
<input type="password" id="id_password" name="txt_password">
<span class="error_noshow">Required field</span>
</div>
<button type="submit">Submit</button>
</form>
</body>
</html>
感谢您阅读我的问题。
答案 0 :(得分:1)
var spans = document.getElementsByTagName('span');
span[0]
是第一个范围,span[1]
是第二个范围。但是,这不是首选方法。使用jQuery使其更容易或添加id或classname
答案 1 :(得分:1)
要访问下一个span元素,您可以使用nextElementSibling属性。
<script type="text/javascript">
function validate() {
var element_id_name = document.getElementById("id_name");
var element_id_password = document.getElementById("id_password");
var firstSpan=element_id_name.nextElementSibling;
return false;
}
</script>
但请记住,nextElementSibling无法在所有版本的浏览器中运行,因此您可以使用nextSibling http://www.w3schools.com/dom/prop_node_nextsibling.asp来模拟这个;
答案 2 :(得分:0)
您可以使用querySelector
按属性查找元素。
function validate() {
var element_id_name = document.querySelector("[name=txt_user_name]");
var element_id_password = document.querySelector("[name=txt_password]");
console.log(element_id_name, element_id_password);
return false;
}
&#13;
.error_noshow{
display: none;
}
.error_show{
color: red;
}
&#13;
<form id="form_login" method="post" action="" onsubmit="validate();">
<div>
<label for="id_name">User Name:</label>
<input type="text" id="id_name" name="txt_user_name">
<span class="error_noshow">Required field</span>
</div>
<div>
<label for="id_password">Password:</label>
<input type="password" id="id_password" name="txt_password">
<span class="error_noshow">Required field</span>
</div>
<button type="submit">Submit</button>
</form>
&#13;
答案 3 :(得分:0)
我没有回答这个问题,因为有人已经这样做了,但好像你想检查一下用户是否在两个字段中输入内容,你可以跳过javascript并使用HTML5 tag "required"这样的
<input type="text" require />
。
如果用户尝试提交,则会收到错误消息。但请记住,旧版本的IE将跳过此检查。