在 (或任何地方) 的代码上下文中,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>
你可以用这个;
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
用于定义一个或多个具有一些共同属性的元素
我假设你想使用一个 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...
}
}
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(64条)