+ -
当前位置:首页 → 问答吧 → 发现jquery存在的一个问题。

发现jquery存在的一个问题。

时间:2009-10-08

来源:互联网

如果我在一个网页里加入N多个文字域,里面填有不同的值:
<input type="text" name="a1" value="12212">
<input type="text" name="a2" value="34asdf">
<input type="text" name="a3" value="45etgdf">
<input type="text" name="a4" value="1xbxbxcv">
<input type="text" name="a5" value="zvdfadf">
如果我想依次取得它们的值的话,
用$('input:eq(0)').val()、$('input:eq(1)').val()、$('input:eq(2)').val()、$('input:eq(3)').val()、$('input:eq(4)').val()、$('input:eq(5)').val()是没用的,取到的全是第一个文本域的值12212,
我不知道为什么会有这种怪情况。
在这里求教一下。
[ 此帖被fanxiaojie在2009-10-16 00:21重新编辑 ]

作者: fanxiaojie   发布时间: 2009-10-08

不会有这种情况吧~!!

作者: yangding39   发布时间: 2009-10-08

jquery 1.3.2
测试无误

作者: jamix   发布时间: 2009-10-08

PLZ try those below:


          alert($(':input:eq(1)').val());

作者: zcrane   发布时间: 2009-10-09

啊,可是你们试试看这个代码的运行结果
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript" src="editor/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var n=$("input").size();
for(i=0;i<n;i++){
alert($("input:eq(i)").val());
}
})
</script>
</head>

<body><input type="text" name="a1" value="12212">
<input type="text" name="a2" value="34asdf">
<input type="text" name="a3" value="45etgdf">
<input type="text" name="a4" value="1xbxbxcv">
<input type="text" name="a5" value="zvdfadf">

</body>
</html>

按理,应该逐次蹦出"12212"、"34asdf"、"45etgdf"、"1xbxbxcv"、"zvdfadf"
但是实际上,每次蹦出来的都是"12212"

作者: fanxiaojie   发布时间: 2009-10-09

不过写成这样子倒是正确了。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript" src="editor/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
alert($("input:eq(0)").val());
alert($("input:eq(1)").val());
alert($("input:eq(2)").val());
alert($("input:eq(3)").val());
alert($("input:eq(4)").val());
})
</script>
</head>

<body><input type="text" name="a1" value="12212">
<input type="text" name="a2" value="34asdf">
<input type="text" name="a3" value="45etgdf">
<input type="text" name="a4" value="1xbxbxcv">
<input type="text" name="a5" value="zvdfadf">

</body>
</html>
但是如果我不知道input的长度的话,显然不能这样写的。

作者: fanxiaojie   发布时间: 2009-10-09

另外,我发现尝试这样写也是错的:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript" src="editor/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var $input=$("input");
var n=$input.size();
for(i=0;i<n;i++){
input.get(i).val();
}
})
</script>
</head>

<body><input type="text" name="a1" value="12212">
<input type="text" name="a2" value="34asdf">
<input type="text" name="a3" value="45etgdf">
<input type="text" name="a4" value="1xbxbxcv">
<input type="text" name="a5" value="zvdfadf">

</body>
</html>

作者: fanxiaojie   发布时间: 2009-10-09

alert($("input:eq(i)").val());代码错误,i在这里取不到值,写成alert($("input:eq(“+i+”)").val());就可以了

作者: yangding39   发布时间: 2009-10-09

$(document).ready(function(){
var $input=$("input");
var n=$input.size();
for(i=0;i<n;i++){
$input.get(i).val();
}
})
这段代码中,$input.get(i)已经将JQuery对象转换为DOM对象了,所以不能用JQuery的方法val(),

改写为$input.get(i).value

作者: js0218   发布时间: 2009-10-09

学习,楼上两位的回复很不错。

作者: conan304   发布时间: 2009-10-09

    $(':input').each(function(i,input){
        alert(input.value);        
    });

作者: zcrane   发布时间: 2009-10-09

啊,非常感谢,真是学习了.

作者: fanxiaojie   发布时间: 2009-10-09

相关阅读 更多