为什么不能通过getElementsByClassName 方式来改变原有的className?

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <style type="text/css">
    .show{
            width: 100px;
            height: 100px;
            border: 1px solid pink;
        }
    </style>
    <script type="text/javascript">
        function rec(){
            var gg=document.getElementsByClassName("close");
            gg.className="show";
        }
    </script>
</head>
<body>


<div class="close">hello world</div>
<input type="button" name="" value="change" onclick="rec()">



</body>
</html>

为什么这样没效果?
要把class="close"改成id="close";通过var gg=document.getElementById("close");才有效?

阅读 4.4k
3 个回答

clipboard.png
该方法返回的是个类数组对象,并不是单个元素。
可以试试
gg[0].className = 'show'

getElementsByClassName() 方法返回所有指定类名的元素集合,注意结果是NodeList对象。
像你这个页面中只有1个同名class可以通过gg[0].className="show";来实现效果

getElementsByClassName() 方法返回的是一个数组,你存入变量后没有选择下标,所以不会执行。
而且使用 ele.setAttribute() 方法去修改dom属性更为可靠一些。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题