【发布时间】:2015-11-20 22:20:53
【问题描述】:
代码优先:
function loopForm() {
var e = document.getElementById("form1").elements;
for (var i = 0; i < e.length; i++) {
alert('this is ' + e[i].ID + ' of type' + e[i].type);
}
我将上面的代码放在一个 .js 中,它是从一个 .aspx 调用的,它在服务器端以一个名为 form1 的表单中的文本框、下拉列表、复选框和标签等动态创建的控件。我的问题是,
代码正在获取所有控件的 ID 和类型,除了 标签,我正在寻找一种使用标签进行操作的方法(更改 style.display、颜色等)
我尝试过使用 JQuery 代码,例如:
$("#form1 label").each(function() { //I used "div", "label" and all sort
alert('hi');
});
并且不起作用。请注意,虽然 document.getElementById 可能有效,但页面上存在的控件每次都不同,因此无法硬编码。
编辑:这是将标签添加到 .aspx 的方式(在我的代码隐藏中):
private Label lbl = new Label();
System.Web.UI.HtmlControls.HtmlGenericControl NewDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
NewDiv1.Controls.Add(lbl);
form1.Controls.Add(NewDiv);
【问题讨论】:
-
请定义“标签”和/或向我们展示 HTML 并准确指出您没有得到哪个元素。
-
.elements选择表单控件。labels 不是表单控件 - 它们不保存数据,不会导致表单提交,并且不是与表单一起提交的数据的一部分。例如,这里只返回input,而不是它旁边的label。 codepen.io/paulroub/pen/RWOVrv -
从这里的答案和 cmets 我确定我误解了标签的处理方式。 @admiraalit 除非您在页面/表单加载后“查看源代码”,否则标签不会显示在 html 上。
-
@PaulRoub thx 正如我所提到的,我确信我误解了标签的处理方式。我正在寻找一种方法来单独更改每个标签的样式(即,当文本框为空时,将标签的 style.display 更改为“内联”)
标签: javascript jquery asp.net