getElementByClass().setAttribute doesn't work

前端 未结 2 1471
长情又很酷
长情又很酷 2020-11-29 12:24

why when i write

document.getElementByClass(\'home1\').setAttribute(\'style\', \'background-image:url(img/red_menu.PNG);\');

it doesn\'t wo

相关标签:
2条回答
  • 2020-11-29 12:59

    If you have only one classname in your entire HTML file, then you could also use

      document.getElementsByClassName('navbar-nav')[0].setAttribute('id', 'navbar-toggle');

    0 讨论(0)
  • 2020-11-29 13:18

    It's getElementsByClassName, not getElementByClass; details here. Note that IE does not support this function (yet).

    getElementsByClassName returns a NodeList of matching elements (rather than a single element), so:

    var list, index;
    list = document.getElementsByClassName("home1");
    for (index = 0; index < list.length; ++index) {
        list[index].setAttribute(/* ... */);
    }
    

    For this sort of thing, you may want to use a library like jQuery, Prototype, Google Closure, etc., to pave over the various browser differences for you. They can save you a lot of time and trouble compared with dealing with those differences yourself.

    For instance, in jQuery:

    $(".home1").attr(/* ... */);
    

    ...applies that attribute (via jQuery#attr) to every element with the class "home1". Although in your particular case, you'd probably want jQuery#css instead.

    0 讨论(0)
提交回复
热议问题