我是一个绝对的javascript noob并且正在使用ASP.net,在我的aspx.cs文件后面的代码中,我使用html标签声明了web文档的主体,如下所示...
public void CreateForm(string passengerType, int passengerCount)
{
for (int i = 1; i <= passengerCount; i++)
{
Response.Write("<table id=NameBirthTable" + passengerType + i + ">");
Response.Write("<tr>");
...
Response.Write("<td colspan=2><input id=MiddleName" + passengerType +i + "type=text /></td>");
...
}
}
当我尝试调用一个元素的ID时,它在id =“MiddleName [passengerType] [i]”中 我找不到它,我需要获取该文本框的值并将其传递到另一个页面,有人向我建议我使用javascript并尝试将这些元素存储在隐藏元素中并将其添加到javascript中声明的数组中,他说,我没有得到任何其他建议吗?
答案 0 :(得分:0)
也许:
Response.Write("<td colspan=2><input id='MiddleName" + passengerType + i + "' type=text /></td>");
答案 1 :(得分:0)
如果您在页面上查看来源,您可能会看到:
<td colspan=2><input id=MiddleNameXYZ1>
<td colspan=2><input id=MiddleNameXYZ2>
<td colspan=2><input id=MiddleNameXYZ3>
换句话说,您的编码并不是格式化为您认为的格式。
答案 2 :(得分:0)
检查生成的文档的来源,以查看生成的ID作为代码的输出。请记住,asp.net控件使用不同的ID呈现,然后是服务器端ID
。要在你的javascript函数中获取它,你需要做类似的事情:
function getElement(){
var myEl = document.getElementByID('<%=ControlID.ClientID%>')
}
其中ControlID
是您控制的服务器端ID。
在您的特定情况下,ControlID可能不具备可用性,因此可能需要在页面类中创建一个属性,该属性将包含您添加的控件 - 例如:
class MyPage:Page{
TextBox TextBoxName {get;set;}
public void CreateForm(string passengerType, int passengerCount)
{
TextBoxName = new TextBox();
this.Controls.Add(TextBoxName);
}
}
我知道这段代码可能与您当前的实现不匹配,但一般来说它应该以这种方式工作。
答案 3 :(得分:0)
尝试以下
public void CreateForm(string passengerType, int passengerCount)
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("<table id='NameBirthTable" + passengerType + "'>");
for (int i = 1; i <= passengerCount; i++)
{
sb.AppendLine("<tr>");
sb.AppendLine("<td colspan='2'><input id='MiddleName" + passengerType + i + "' type='text' /></td>");
}
sb.AppendLine("</table>");
Response.Write(sb.ToString());
}
答案 4 :(得分:0)
在服务器端,您可以创建所有已创建ID的列表,并将其作为值输出到隐藏字段。
public void CreateForm(string passengerType, int passengerCount)
{
/* List to hold id values */
List<string> ids = new List<string>();
for (int i = 1; i <= passengerCount; i++)
{
Response.Write("<table id=NameBirthTable" + passengerType + i + ">");
Response.Write("<tr>");
// ...
Response.Write("<td colspan=2><input id=MiddleName" + passengerType +i+ "type=text /></td>");
// ...
/* Add newly created input id to list */
ids.Add("MiddleName" + passengerType +i);
}
/* Output the ids collection to hidden field value */
Response.Write("<input type='hidden' id='hiddenElement' value='" + string.Join(",", ids.ToArray()) + "'></input>");
}
在客户端 javascript,您可以从隐藏元素中获取所有这些ID,循环遍历它们并获取所有创建的输入元素
/* Get all ids from hidden element */
var ids = document.getElementById('hiddenElement').value.split(',');
/* Loop through all ids */
for (var i = 0; i < ids.length; i++) {
var element = document.getElementById(ids[0]);
// do something
}