我强迫使用getElementsByClassName()[]而不是getElementByClass()

时间:2014-09-25 03:48:36

标签: javascript

我有8个divs id =" div1"," div2"," div3" .... class = divs 。我还有button class =" div1"," div2"," div3" .....

当我点击button id =" div1" 时,它会首先删除所有 class =" selected" 到拥有 class =" divs" 的所有div,然后只有div id =" div1& #34; 将选择class 。等等......

我想使用document.getElementByClass()删除class,但它无法在 FIDDLE 中使用。 :(

相反,我被迫使用document.getElementsByClassName()[]。但是编码似乎很难,因为它要求我为classname添加特定的数组。

这正是我想要实现 FIDDLE

4 个答案:

答案 0 :(得分:4)

由于某种原因,没有getElementByClass:与id不同,class未在文档中指定为唯一。你会得到哪个元素?不,你需要能够获得所有这些。如果你得到一个数组,那就通过循环来解决,而不是通过重复每个索引的行来解决:

然而,您的设计效率低下;如果你已经在使用jQuery,你可以非常紧密地编写它。这会更好:

<button class="divbuttons" data-div="div1">div1</button>
<button class="divbuttons" data-div="div2">div2</button>
...

然后你可以:

$(document).ready(function(){
  $('.divbuttons').click(function() {
    var div = $(this).data("div");
    $('.divs.selected').removeClass('selected');
    $('#' + div).addClass('selected');
  });
});

答案 1 :(得分:3)

这很简单。没有document.getElementByClass

您有document.getElementByIddocument.getElementByClassName

答案 2 :(得分:2)

没有getElementByClass()这样的东西,因为多个元素可以具有相同的类。 getElementById()(元素具有唯一ID,或者至少它们应该是)和getElementsByClassName(),它返回与指定类匹配的所有元素的数组。

答案 3 :(得分:1)

$(document).ready(function () {

    $("button[class^=div]").click(function () {

        $(".divs.selected").removeClass("selected");

        $("#" + $(this).attr("class")).addClass("selected");

    });
});

DEMO