Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环通过DOM元素,包括span元素_Javascript_Html_Dom - Fatal编程技术网

Javascript 循环通过DOM元素,包括span元素

Javascript 循环通过DOM元素,包括span元素,javascript,html,dom,Javascript,Html,Dom,我正试图让一个函数工作,但没有任何运气,所以我想我会问一个新手问题的Stackoverflow大脑信任 基本上,我有一个表单,我正在遍历所有元素,以查看是否存在自定义数据属性。如果它在那里,则保持元素可见,如果它不在那里,则隐藏元素 当我使用下面的函数时,它会在表单上的所有输入字段中循环,但它会忽略任何span或div元素,即使它们具有值为“FocusGroup”的“data group”属性 function DropDownSelection_Focus(FocusGroup) { var

我正试图让一个函数工作,但没有任何运气,所以我想我会问一个新手问题的Stackoverflow大脑信任

基本上,我有一个表单,我正在遍历所有元素,以查看是否存在自定义数据属性。如果它在那里,则保持元素可见,如果它不在那里,则隐藏元素

当我使用下面的函数时,它会在表单上的所有输入字段中循环,但它会忽略任何span或div元素,即使它们具有值为“FocusGroup”的“data group”属性

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值,因此是否有将它们从循环中排除的原因?

表单对象的element属性返回表单中所有元素的集合。元素表示输入、文本区域、按钮或选择。支持用户操作的东西-可以按下、选择等。如果您想获取具有数据组属性的所有元素,可以使用如下方式:

var elementsWithGroupAttr = frm_FormName.querySelectorAll("*[data-group]");

frm_FormName是代码段中的变量形式

表单对象的element属性返回表单中所有元素的集合。元素表示输入、文本区域、按钮或选择。支持用户操作的东西-可以按下、选择等。如果您想获取具有数据组属性的所有元素,可以使用如下方式:

var elementsWithGroupAttr = frm_FormName.querySelectorAll("*[data-group]");

frm_FormName是代码段中的变量形式

感谢大家帮助解决这个问题。我能够让我的循环与以下内容一起工作,以便其他人在以后搜索:

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';
    }
}
虽然格奥尔基的答案是唯一被接受的答案,但沃纳、亚利亚什和洛德凯恩的帮助也得到了认可


谢谢大家

感谢大家帮助解决这个问题。我能够让我的循环与以下内容一起工作,以便其他人在以后搜索:

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';
    }
}
虽然格奥尔基的答案是唯一被接受的答案,但沃纳、亚利亚什和洛德凯恩的帮助也得到了认可


谢谢大家

你知道jquery吗?不,还不知道,但一旦我学会了JS的基本知识,它就在我的“待办事项”列表中。这可能会帮助你:document.QuerySelector all'form:not[data group]“应该选择表单中id表单没有数据组属性的所有元素。这是一把小提琴,它在特殊情况下隐藏一个div。你知道jquery吗?不,还没有,但一旦我学会了JS的基本知识,它就在我的“待办事项”列表中。这可能会帮助您:document.QuerySelector所有的“form:not[data group]”应该用id表单选择表单中没有数据组属性的所有元素。这是一个为您准备的小提琴,它在特殊条件下隐藏一个div好的,这很有意义。。。我是否会更好地使用querySelectorAll,因为我的一些搜索任务中似乎会出现这种情况,这是有道理的。。。我会更好地使用querySelectorAll吗?因为在我的一些搜索中似乎会出现这种情况