循环遍历DOM元素,包括span元素

时间:2016-06-23 09:04:24

标签: javascript html dom

我试图让一个功能起作用,但是没有运气,所以我想问一个新的问题,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值,所以它们是否有被排除在循环之外的原因?

2 个答案:

答案 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的帮助也得到了承认。

谢谢大家!