在下面的代码(或任何地方)的上下文中,getelementbyid函数是否可以多个工作?或者我需要一个不同的功能,或者可能是Jquery?
<script type="text/javascript">
window.onload = function()
{
var test = document.getElementById('test');
if (test)
{
test.className = 'unactive';
test.firstChild.onclick = function()
{
if(this.parentNode.className == 'unactive') {
this.parentNode.className = 'active';
}
else
{
this.parentNode.className = 'unactive';
}
}
}
};
</script>
答案 0 :(得分:0)
我假设你想使用ID列表对多个元素进行操作。 (如果我错了,你实际上想要选择具有相同ID的多个元素,那么你做了一件坏事,因为ID应该是唯一的。在这种情况下,你应该使用类。)
在jQuery中,您可以使用以逗号分隔的id选择器列表(如$("#foo, #bar, #baz")
)来完成此操作,并实现以下功能:
$("#foo, #bar, #baz").addClass("unactive")
.children(":first-child").click(function() {
var $this = $(this);
var $parent = $this.parent();
$parent.toggleClass("active unactive");
});
没有jQuery,这个小函数会获取一个ID列表并生成一个节点数组:
document.getElementsByIdList() {
var results = [];
for(var i=0; i<arguments.length; ++i) {
results.push(document.getElementById(arguments[i]));
}
return results;
}
使用当前代码:
var myNodeArray = document.getElementsByIdList("foo", "bar", "baz");
for(var i=0; i<myNodeArray.length; ++i) {
var test = myNodeArray[i];
if(test) {
// your code goes in here...
}
}
答案 1 :(得分:0)
你可以使用它;
document.getAllById = function(id){
if(document.all)
return document.all[id];
var elements = [],
all = document.getElementsByTagName('*');
for(var i=0;i<all.length;i++)
if(all[i].getAttribute('id')===id)
elements.push(all);
return elements;
}
无论如何,正如@Pointy所说,id
属性应该是唯一的,而class
用于定义一个或多个具有某些共同属性的元素