gpt4 book ai didi

javascript - 隐藏字段是否总是提交项目列表中的第一个值?

转载 作者:可可西里 更新时间:2023-11-01 17:29:05 27 4
gpt4 key购买 nike

很长一段时间以来,我一直在努力解决这个问题。不知道我哪里错了。我显示了数据库中的网站列表,其中每个 URL 都有唯一的 ID(我将它们保存为隐藏字段)。

for(int i = 0; i < favoriteList.length; i++) {  

String url = favoriteList[i].getUrl();
out.println("<tr>");
out.println("<td>");

out.println(" <form id=\"countForm\" method=\"POST\">");
out.println(" <input type=\"hidden\" name=\"favoriteID\" value=\""
+ favoriteList[i].getFavoriteId() + "\" />");
out.println("<a"
+ " href =\" javascript:document.countForm.submit();\""
+ " onclick=\"document.getElementById('countForm').submit();\"" + " />" + url + "</a>");
out.println("</form>");

out.println("</td> <tr> <td>");
out.println("<p>" + favoriteList[i].getComment() + "</p>" );
out.println("</td></tr> <tr><td>");
out.println("<p>" + favoriteList[i].getClickCount() + "</p>");
out.println("</td></tr>");
}

网站列表显示正确。但是,单击 URL 后,应该提交表单并且 URL 的计数应该增加(基本上,尝试计算点击次数)。每当我尝试将 URL 的 ID(从隐藏字段中)获取为 String updateAction = request.getParameter("favoriteID"); 时,都会读取第一个链接的 ID (1)。不确定我是否做对了。

编辑: 我知道编写 Servlet 是个坏主意,但这是一个家庭作业,我必须使用 Servlet,而不是 JSP 或其他替代方案。

最佳答案

如果您的 favoriteList有多个元素,那么您将创建多个 <form>元素,全部命名为 countForm .

document.getElementById('countForm')将返回具有该名称的第一个1 表单,因此您总是张贴第一个表单,而不是其中包含链接的表单。

一种修复方法是用不同的方式命名表单,例如在表单名称后缀 i 的值:

for(int i = 0; i < favoriteList.length; i++) {  

String url = favoriteList[i].getUrl();
out.println("<tr>");
out.println("<td>");

out.println(" <form id=\"countForm" + i + "\" method=\"POST\">");
out.println(" <input type=\"hidden\" name=\"favoriteID\" value=\""
+ favoriteList[i].getFavoriteId() + "\" />");
out.println("<a"
+ " href =\" javascript:document.countForm" + i + ".submit();\""
+ " onclick=\"document.getElementById('countForm" + i + "').submit();\"" + " />" + url + "</a>");
out.println("</form>");

out.println("</td> <tr> <td>");
out.println("<p>" + favoriteList[i].getComment() + "</p>" );
out.println("</td></tr> <tr><td>");
out.println("<p>" + favoriteList[i].getClickCount() + "</p>");
out.println("</td></tr>");
}

1 注意:您获得第一个表单的事实取决于浏览器。 DOM spec说:

Returns the Element whose id is given by elementId. If no such element exists, returns null. Behavior is not defined if more than one element has this id.

关于javascript - 隐藏字段是否总是提交项目列表中的第一个值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40813796/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com