getElementByName&Regex

use*_*080 4 javascript regex

如何使用getElementByName中的正则表达式遍历所有元素?

小智 16

如果你的意思是:

var elementArray = document.getElementsByName("/regexhere/");
Run Code Online (Sandbox Code Playgroud)

那不可能是不可能的.

要做你想做的事,你必须得到所有的元素,然后通过每个元素并检查它的名称.

下面是一个函数,它将遍历所有元素并将具有特定名称的所有元素添加到数组中:

    function findElements(name)
    {
        var elArray = [];
        var tmp = document.getElementsByTagName("*");

        var regex = new RegExp("(^|\\s)" + name + "(\\s|$)");
        for ( var i = 0; i < tmp.length; i++ ) {

            if ( regex.test(tmp[i].name) ) {
                elArray.push(tmp[i]);
            }
        }

        return elArray;

    }
Run Code Online (Sandbox Code Playgroud)

用作:

var elName = "customcontrol";

var elArray = customcontrol(elName);
Run Code Online (Sandbox Code Playgroud)

或者className可能更容易

    function findElements(className)
    {
        var elArray = [];
        var tmp = document.getElementsByTagName("*");

        var regex = new RegExp("(^|\\s)" + className+ "(\\s|$)");
        for ( var i = 0; i < tmp.length; i++ ) {

            if ( regex.test(tmp[i].className) ) {
                elArray.push(tmp[i]);
            }
        }

        return elArray;

    }
Run Code Online (Sandbox Code Playgroud)

用作:

var elClassName = "classname";

var elArray;

if (!document.getElementsByClassName)
{
   elArray= findElements(elClassName );
}
else
{
   elArray = document.getElementsByClassName(elClassName);
}
Run Code Online (Sandbox Code Playgroud)

这可以做你想要的,而不需要getElementByName.

虽然我认为你的意思是getElementsByName

如果您想查找只有名称"customcontrol"的元素,您可以使用:

var regex = new RegExp("(^|\\s)" + name + "(\\s|$)");
Run Code Online (Sandbox Code Playgroud)

如果您想查找具有名称"customcontrol"的STARTED元素,您可以使用:

var regex = new RegExp("(^|\\s)" + name);
Run Code Online (Sandbox Code Playgroud)

编辑:

如果您使用jQuery,这将更容易,那么这将做:

var elArray = $("*[name^='customcontrol']");

//Use JavaScript to loop through
for (var a = 0; a< elArray.length;a++)
{
   //Loop through each element
   alert(elArray[a]);
}
//Or
$("*[name^='customcontrol']").css("color","red"); //Or whatever you want to do to the elements
Run Code Online (Sandbox Code Playgroud)