js如何获取/解决jsp循环输出时,id相同,value不同?

时间:2022-10-04 20:29:41
jsp代码:
<%GoodsDao goodDao=new GoodsDaoImpl();
List<Goods> ls;
if(goodId==null) ls= goodDao.findAll();
else ls=goodDao.findAllByType(Integer.parseInt(request.getParameter("id")));
for(Goods goods:ls){%>
<input type="hidden" id="test" value="<%=goods.getId()%>" >
<input type="button" value="购物" onclick="verify()" /><br/>
<%}%>

因为我想用ajax传送给servlet函数处理
js代码:
var value = $("#test").val();
$.get("shopping_cart?id=" + value,null,callback); 

这种情况,value得到的数值总是第一个数值,因为 id相同,请问有什么办法解决这个问题??

10 个解决方案

#1


问题是,你想一次取得 一个值?
还是多个值 ?

#2


要么就设法让id不同,比如带后缀序号。

要么就用name属性来做查找,表达式中可以指定序号,也可以按value做过滤,jQuery的选择器都支持。

#3


引用 1 楼  的回复:
问题是,你想一次取得 一个值?
还是多个值 ?
 我想点击一次取一个值,这样就可以方便我处理是否选择。谢谢回复

#4


引用 2 楼  的回复:
要么就设法让id不同,比如带后缀序号。

要么就用name属性来做查找,表达式中可以指定序号,也可以按value做过滤,jQuery的选择器都支持。
有想过,但是,如果使用你说的设置id,那么js如何每次都获取不同的id的值呢?表达式中指定序号?这个没有用过,可否详细解说?谢谢

#5


按属性值来选择节点,比如:
$("input[value='hello']")

其中[]就是做属性选择的,可以同时做多个属性选择,用多个[][]即可

#6


另一种按顺序号选择,比如:
$("input:eq(2)")
这就是选择第三个(从0开始计数)。

#7


for(Goods goods:ls){%>
<input type="hidden" id="test" value="<%=goods.getId()%>" >
<input type="button" value="购物" onclick="verify("<%=goods.getId() %>")" /><br/>
<%}%>
-------js------
function verify(value){
$.get("shopping_cart?id=" + value,null,callback);
}

给分,给分

#8



也可以
<input type="button" value="购物" onclick="verify(this)" /><br/>

function verify(element){
var value = element.previousSibling.value;
$.get("shopping_cart?id=" + value,null,callback);
}

#9


还可以
for(Goods goods:ls int i=0;i<ls.size();i++){
Goods goods = (Goods)ls.get(i)
%>
<input type="hidden" id="test<%=i%>" value="<%=goods.getId()%>" >
<input type="button" value="购物" onclick="verify("<%=i%>")" /><br/>
<%}%>

function verify(index){
var id = "#test"+index
var value =  $(id).val();
......
}
代码可能会有问题,按这思路应该能搞出来
反正就一句,给分,给分,别费话,我可是记着你的名字呢

#10


引用 8 楼  的回复:
也可以
<input type="button" value="购物" onclick="verify(this)" /><br/>

function verify(element){
var value = element.previousSibling.value;
$.get("shopping_cart?id=" + value,null,callback);
}
非常感谢你的解答,问题已经解决,没想到还可以用参数传递,脑子一时短线

#1


问题是,你想一次取得 一个值?
还是多个值 ?

#2


要么就设法让id不同,比如带后缀序号。

要么就用name属性来做查找,表达式中可以指定序号,也可以按value做过滤,jQuery的选择器都支持。

#3


引用 1 楼  的回复:
问题是,你想一次取得 一个值?
还是多个值 ?
 我想点击一次取一个值,这样就可以方便我处理是否选择。谢谢回复

#4


引用 2 楼  的回复:
要么就设法让id不同,比如带后缀序号。

要么就用name属性来做查找,表达式中可以指定序号,也可以按value做过滤,jQuery的选择器都支持。
有想过,但是,如果使用你说的设置id,那么js如何每次都获取不同的id的值呢?表达式中指定序号?这个没有用过,可否详细解说?谢谢

#5


按属性值来选择节点,比如:
$("input[value='hello']")

其中[]就是做属性选择的,可以同时做多个属性选择,用多个[][]即可

#6


另一种按顺序号选择,比如:
$("input:eq(2)")
这就是选择第三个(从0开始计数)。

#7


for(Goods goods:ls){%>
<input type="hidden" id="test" value="<%=goods.getId()%>" >
<input type="button" value="购物" onclick="verify("<%=goods.getId() %>")" /><br/>
<%}%>
-------js------
function verify(value){
$.get("shopping_cart?id=" + value,null,callback);
}

给分,给分

#8



也可以
<input type="button" value="购物" onclick="verify(this)" /><br/>

function verify(element){
var value = element.previousSibling.value;
$.get("shopping_cart?id=" + value,null,callback);
}

#9


还可以
for(Goods goods:ls int i=0;i<ls.size();i++){
Goods goods = (Goods)ls.get(i)
%>
<input type="hidden" id="test<%=i%>" value="<%=goods.getId()%>" >
<input type="button" value="购物" onclick="verify("<%=i%>")" /><br/>
<%}%>

function verify(index){
var id = "#test"+index
var value =  $(id).val();
......
}
代码可能会有问题,按这思路应该能搞出来
反正就一句,给分,给分,别费话,我可是记着你的名字呢

#10


引用 8 楼  的回复:
也可以
<input type="button" value="购物" onclick="verify(this)" /><br/>

function verify(element){
var value = element.previousSibling.value;
$.get("shopping_cart?id=" + value,null,callback);
}
非常感谢你的解答,问题已经解决,没想到还可以用参数传递,脑子一时短线