gpt4 book ai didi

javascript - getElementsByName & 正则表达式

转载 作者:搜寻专家 更新时间:2023-11-01 04:47:57 28 4
gpt4 key购买 nike

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

最佳答案

如果你的意思是:

var elementArray = document.getElementsByName("/regexhere/");

那么不,那是不可能的。

要完成您想做的事,您必须获取所有元素,然后遍历每个元素并检查它的名称。

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

    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;

}

并用作:

var elName = "customcontrol";

var elArray = customcontrol(elName);

或者通过类名可能更容易

    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;

}

并用作:

var elClassName = "classname";

var elArray;

if (!document.getElementsByClassName)
{
elArray= findElements(elClassName );
}
else
{
elArray = document.getElementsByClassName(elClassName);
}

这会做你想做的,而不需要 getElementByName。

虽然我认为你的意思是 getElementsByName

如果你想寻找一个只有名字“customcontrol”的元素,你可以使用:

var regex = new RegExp("(^|\\s)" + name + "(\\s|$)");

如果你想寻找一个以名称“customcontrol”开始的元素,你可以使用:

var regex = new RegExp("(^|\\s)" + name);

编辑:

如果您使用 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

关于javascript - getElementsByName & 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3184093/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com