Javascript 为动态创建的元素指定唯一的名称

Javascript 为动态创建的元素指定唯一的名称,javascript,servlets,Javascript,Servlets,这是javascript代码,我想在每次创建新元素时更改name属性。每次添加新表行时,我都会创建新的文本框。但当我试图从servlet访问这些元素的值时,它会显示空值。我到底做错了什么?任何帮助都将不胜感激。提前谢谢 <html> <head> <script> function addRow() { var table = document.getElementById('table'); var rowCount = table.ro

这是javascript代码,我想在每次创建新元素时更改name属性。每次添加新表行时,我都会创建新的文本框。但当我试图从servlet访问这些元素的值时,它会显示空值。我到底做错了什么?任何帮助都将不胜感激。提前谢谢

<html>
<head>
<script>

function addRow()
 {
    var table = document.getElementById('table');
    var rowCount = table.rows.length;
    var row = table.insertRow(rowCount);
    var cell1 = row.insertCell(0);
    var element1 = document.createElement("input");
    element1.type = "text";
    element1.name ="item"+rowCount;
    cell1.appendChild(element1);     
    var cell2 = row.insertCell(1);
    var element2 = document.createElement("input");
    element2.type = "text";
    element2.name ="amount"+rowCount;   
    cell2.appendChild(element2);
    var cell3 = row.insertCell(2);
    cell3.innerHTML = ' <input type="button" value="Edit" onclick="editRow(this)"/>           <input type="button" value="Delete" onclick="deleteRow(this)"/>';
    cell3.setAttribute("style", "display:none;");
    var cell4 = row.insertCell(3);
    cell4.innerHTML = '<input type="button" value="Save" onClick="saveRow(this)">';

    document.listform.hfield.value=rowCount;
}
function submitList()
 {
 document.listform.submit();    
 }
</script>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Create your list</title>
</head>
<body>
<form name="listform" method="post" action="Billingservlet">
<div class="wrap">
<center>
<div id="display">
<table id='table' border="0">
<tr id='id'>
<th>Item Name</th>
<th>No. of units</th>   
</tr>   
</table>    
<input type="button" value="Add another item" onclick="addRow()">
<input type="button" value="Submit List" onclick="submitList()">
<input type="hidden" name="hfield">
我使用chrome检查了哪些数据将进入servlet:

hfield:2
Response Headersview parsed
HTTP/1.1 200 OK
server: Apache-Coyote/1.1
Content-Length: 4
Date: Fri, 13 Sep 2013 02:21:29 GMT
1) 您可以使用
element.name=newName
2) 您可以使用
element.setAttribute(“name”,newName)

其中任何一个都将设置元素的“name”属性

所以

……或者

var element1 = document.createElement("input");
element1.setAttribute("name","myInput");

我认为您在这里丢失了相当多的相关代码。什么时候会将任何内容发布到servlet?代码在哪里?您正在对servlet进行AJAX调用吗?其中定义了名称字段为“item1”或“item2”的输入?您是否使用AJAX帖子发送项目数组?到底发生了什么

您提供的JavaScript函数没有对服务器的调用,我甚至不确定您是如何看到输出空值的

如果您想查看发送到servlet的所有参数,为什么不执行一个循环来打印它们呢

    for (String name : request.getParameterMap().keySet()) {
        System.out.println("Name: " + name + " = " + request.getParameter(name));
    }

将其他JavaScript函数或相关HTML表单张贴到数据实际发送到服务器的位置,这样可能更容易确定问题。

在提交表单时检查发送到服务器的请求
标题。这些详细信息可以从chrome的控制台(网络选项卡)上看到。好的!我会的。但是函数是否正确?您的js代码似乎还可以。使用发送到服务器的标题更新您的问题。请指定我应该如何打开chrome控制台(网络选项卡)?当我尝试使用request.getHeader(“item1”)时,我的servlet中仍然显示空值。我尝试使用这两种方法,但当我尝试使用request.getParameter(“paramvalue”)打印它时仍然得到空值请求来自哪里?另外,在哪里定义了.getParameter()?我正在尝试使用getParameter方法打印servlet中的值。我可能建议您做更多的研究,然后编辑您的原始帖子,以更好地反映您试图实现的目标。您当前的问题(如何更改html元素的名称)已得到回答。我猜您正在引用一个Java小程序(servlet)并试图通过该小程序获取HTML元素?(请记住,Java无论如何都不是JavaScript)
var element1 = document.createElement("input");
element1.setAttribute("name","myInput");
    for (String name : request.getParameterMap().keySet()) {
        System.out.println("Name: " + name + " = " + request.getParameter(name));
    }