我试图让一个功能起作用,但是没有运气,所以我想问一个新的问题,Stackoverflow的大脑 - 信任!
基本上,我有一个表单,我循环遍历所有元素,看看是否存在自定义数据属性。如果它在那里,保持元素可见,但如果它不存在,则隐藏元素。
当我使用下面的函数时,它会循环遍历表单上的所有输入字段,但它会忽略任何span或div元素,即使它们具有' data-group'值为' FocusGroup'
的属性function DropDownSelection_Focus(FocusGroup)
{
var elements = frm_FormName.elements;
var el;
for (var i=0, iLen=elements.length; i<iLen; i++)
{
el = elements[i];
var GetGroup = document.getElementById(el.name).getAttribute('data-group');
if (GetGroup != null && GetGroup !='')
{
if (GetGroup == FocusGroup.value)
{
document.getElementById(el.name).style.visibility = 'visible';
}
else
{
document.getElementById(el.name).style.visibility = 'hidden';
}
}
}
}
span / div元素同时具有id和name值,所以它们是否有被排除在循环之外的原因?
答案 0 :(得分:3)
FORM对象的element属性返回表单中所有元素的集合。元素表示输入,文本区域,按钮或选择。支持“用户操作”的东西 - 可以被按下,选择等等。如果你想获得具有数据组属性的所有元素,你可以使用这样的东西:
var elementsWithGroupAttr = frm_FormName.querySelectorAll("*[data-group]");
frm_FormName是表单(代码片段中的变量)。
答案 1 :(得分:0)
感谢大家帮忙解决这个问题。我能够让我的循环使用以下内容(为了以后搜索的其他人的利益):
var elements = frm_FormName.querySelectorAll("*[data-group]");
var el;
for (var i=0, iLen=elements.length; i<iLen; i++)
{
el = elements[i]
var GetGroup = el.getAttribute('data-group');
if (GetGroup == FocusGroup.value)
{
el.style.visibility = 'visible';
}
else
{
el.style.visibility = 'hidden';
}
}
虽然Georgi是唯一的回答&#39;作为被接受者,Werner,yariash和lordkain的帮助也得到了承认。
谢谢大家!