我只是想知道如何获取确切的div值? 每个div id =购物车值= 1 / div id =购物车值= 2 .......大约有10个按钮,但是当我单击每个按钮时,我看到的只是1个,因此增加了索引。 我该如何解决这个问题?
<%
String url = "https://store.pinkfong.com/category/soundbook/";
String line = "";
int index = 0;
try {
Document doc;
doc = Jsoup.connect(url).get();
Elements media4 = doc.select("div.container ul li img ");
Elements media5 = doc.select(".title ");
for (int i = 0; i < media5.size(); i++) {
Element src1 = media4.get(i);
Element src2 = media5.get(i);
index++;
String templine = "<div id = 'cart' value= " + index + " >"
+ "<button id='button1' onclick='bb();'>button</button>" + src1.toString();
line += templine;
templine = src2.toString();
line += templine + "</div>";
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
%>
<script>
function bb() {
var num = document.getElementById('cart').getAttribute('value');
alert(num);
}
</script>
<body>
<%=line%>
</body>
答案 0 :(得分:1)
ID应该是唯一的。 document.getElementById
将始终返回第一个结果,因此,在您的情况下,它仅与第一个“购物车”匹配。
为解决这个问题,我只需要从id
中选择<div>
并稍微更改bb
函数。首先传递被单击的按钮。
<%
// ...
String templine = "<div value= " + index + " >"
+ "<button id='button" + index + "' onclick='bb(this);'>button</button>" + src1.toString();
// ...
%>
然后,您的bb
函数应接受该按钮,并使其成为父级的value
:
function bb(button) {
var num = button.parentNode.getAttribute('value');
alert(num);
}
这被认为是一种过时的方法,现代的开发人员会改用“事件委托”来处理,但这可能不在这个问题的范围之内。
答案 1 :(得分:0)
这是因为您正在使用ID。因此,它将获得ID为'cart'的第一项。