以下代码:
<button type="button" id="button" onclick="<%cart.removeItem(0);%>">Click me</button>
假设在单击按钮时执行。但是,
"<%cart.removeItem(0);%>"
在没有单击按钮的情况下刷新页面时正在执行。为什么会这样?
干杯。
这是完整的消息来源。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<jsp:useBean id="cart" scope="session" class="myBeans.cart" />
<%
cart.addItem("aji", "1000", "1");
cart.addItem("ewer", "200", "1");
cart.addItem("dfwerweji", "10", "1");
cart.addItem("ldsjioi", "1320", "1");
String[] prodNames = cart.getProdNames();
double[] prices = cart.getProdPrices();
int[] qtys = cart.getProdQtys();
double total = 0;
for(int i=0; i<prodNames.length; i++){
total += prices[i]*qtys[i];
out.println(prodNames[i]);
out.println(" " + prices[i] + " ");
out.println("<input type=text name=newQty value=" + qtys[i] + ">");
out.println(" " + prices[i] * qtys[i]);
}
%>
<br/>
<button type="button" id="button" onclick="<%cart.removeItem(0);%>">Click me</button>
</body>
</html>
答案 0 :(得分:2)
我认为你在这里混淆了你的语言。我怀疑'cart'是一个Java对象,你只能在客户端修改JavaScript对象。你必须有这样的东西才能使它发挥作用:
<script>
doRemoveFirst = function() { new Ajax.Request('removeFirst.page'); };
</script>
<button type="button" id="button" onclick="doRemoveFirst();">Click me</button>
然后在服务器上有一个名为'removeFirst'的页面,它将从Java对象中删除该对象(可能保存在会话中?),您可以相应地更新页面。
编辑:这是一张值得帮助的图片。对角线的所有东西都是客户端的,而一切都是服务器端的。
编辑2 :删除并修复用户的页面
我会说(假设jQuery)这可能适合你。
$(".item-row").first().remove();
$(".item-row").each(function(idx, el) {
var elem = $(el).children().find('.index-cell');
elem.text(+elem.text() - 1);
});