[英]How to get span element with no id which is inside a div with no id
我在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元素? 以及如何获得第二输入元素之后的第二跨度元素? 由于我没有跨度元素的ID,因此无法使用document.getElementById()
。 有没有一种方法可以通过引用第一输入元素来获取第一跨度元素?
这是我的代码:
<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>
感谢您阅读我的问题。
var spans = document.getElementsByTagName('span');
span[0]
是第一个跨度, span[1]
是第二个跨度。 但是,这不是首选的方法。 使用jQuery使其更容易,或者添加ID或类名
要访问下一个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进行模拟。
您可以使用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; }
.error_noshow{ display: none; } .error_show{ color: red; }
<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>
我没有回答这个问题,因为有人已经这样做了,但是似乎您想检查用户是否在两个字段中都输入了内容,因此可以跳过javascript并使用HTML5标签“ required”,如下所示
<input type="text" require />
。
如果用户尝试提交,将收到一条错误消息。 但是请记住,旧版本的IE会跳过此检查。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.