我有两个span包含一个带有相同id的HTML文本框,如“field1”。基于下拉值,在给定时间仅在屏幕上显示这两个范围。显示跨度中的任何一个或者不显示任何一个。从两个具有相同ID的HTML元素之一提取值
我在原型js中使用.hide();
和.show();
来根据下拉值显示和隐藏这些跨度。但是,只要我在提交时尝试获取$F('field1');
的值,我只会获得第一个HTML文本框的值(该值为空)。
有没有一种方法可以解决这个问题,以获得可见的HTML文本框的值?
我有两个span包含一个带有相同id的HTML文本框,如“field1”。基于下拉值,在给定时间仅在屏幕上显示这两个范围。显示跨度中的任何一个或者不显示任何一个。从两个具有相同ID的HTML元素之一提取值
我在原型js中使用.hide();
和.show();
来根据下拉值显示和隐藏这些跨度。但是,只要我在提交时尝试获取$F('field1');
的值,我只会获得第一个HTML文本框的值(该值为空)。
有没有一种方法可以解决这个问题,以获得可见的HTML文本框的值?
使用类。元素的ID应该是唯一的,因为它是ID;)
选择具有指定类名称的所有元素。您将获得具有指定类名称的元素数组。
var eleCollection = document.getElementByClassName("anyClassName");
在此之后,U可以通过这个数组元素的循环,并得到他们的价值观
for(element in eleCollection) {
var thisValue = element.getAttribute("value");
console.log("Element: ",element," value: ",value);
}
因此,当我循环获取每个元素时,如何获取文本框的值?我应该使用
请参阅编辑答案.. – Shades88 2011-12-20 13:19:20
如果您使用的是Prototype,我会建议您坚持Prototype的做事方式。 '$$()'而不是'document.getElementByClassName()','array.each()'而不是'for(var in array)',等等 – dontGoPlastic 2011-12-20 18:51:12
id
在页面内应该是唯一的。
我假设你有不同的下拉值。如果是这样,请为这些跨度分配不同的id
,并使用选定的下拉值选择其中一个。
没有两个元素都不应具有相同的ID - 它必须是一个唯一的标识符。这样做违反了DTD。将元素更改为具有不同的ID。 – Polynomial 2011-12-20 09:59:37
2个元素使用class而不是ID。 – yosh 2011-12-20 10:01:23
@Polynomial是的,我同意这一点,但由于某些原因,我被迫为这两个组件使用相同的ID。就像,我正在使用Spring。 HTML元素的表单ID应该映射到一个表单对象,因为一次只能有一个表单对象可用。所以我不能有不同的ID。在Spring中,