如何使用getElementByName中的正则表达式遍历所有元素?getElementByName&Regex
回答
如果你的意思是像:
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
如何循环使用$(“* [name^='customcontrol']”);? – user384080 2010-07-06 22:59:45
+1很好做,我完全忘了jQuery有内置的某种形式的匹配。另请参见:http://stackoverflow.com/questions/190253/jquery-selector-regular-expressions – cgp 2010-07-06 23:53:11
@ ronald-yoh更新了我的答案用于循环元素。 – 2010-07-07 06:04:58
使用jQuery的一个custom selector。你可能想要一个example with parameters。
我从来不知道你能做到这一点!那真好;那真甜。 – 2010-07-06 13:48:37
- 1. 的Flex getElementByName
- 2. html js append和getElementByName
- 3. JavaScript getElementByName()。value not working
- 4. JavaScript getElementByName不起作用
- 5. getElementByName似乎不工作
- 6. 使用getElementByName进行只读操作吗?
- 7. 对象#<HTMLDocument>没有方法'getElementByName'
- 8. 使用getElementByName在网站导航
- 9. 在REGEX REGEX错误
- 10. 可以通过javascript getElementByName访问隐藏的元素吗?
- 11. GetElementByName不会给出与GetElementById相同的结果
- 12. Java - Regex - “”
- 13. Regex confution
- 14. 在RegEx
- 15. REGEX preg_split()
- 16. Javascript REGEX
- 17. document.getElementById + regex
- 18. preg_replace REGEX
- 19. REGEX,pythonchallenge.com
- 20. REGEX no numbers or()
- 21. Play Framework Regex CORS
- 22. boost :: regex - \ bb?
- 23. Javascript REGEX:标签
- 24. Python Regex Tokenize
- 25. Perl RegEx错误
- 26. RedirectMatch> regex
- 27. REGEX的列表
- 28. OrderedDictionary和Regex
- 29. [[:jletterdigit:]] to classic regex
- 30. PO Box RegEx Issue
不要描述你如何认为你可以解决你的问题,描述你的*问题*。 – Tomalak 2010-07-06 07:17:58
我有控件动态填充..由于他们是asp控件,Id将被改变,同时呈现。我在想,因为name属性总是包含单词“customcontrol”,那么也许我可以遍历所有的控件。 – user384080 2010-07-06 07:23:56
你需要用这些控件做什么?另外,是不是可以向他们添加一个共同的类? – James 2010-07-06 07:32:12