javascript - document.getElementsByClassName 不像 getElementById 那样工作

标签 javascript html

<分区>

我有这段代码(在 www.dtwdev.co.uk/errors/index.html 上运行)

基本上是这样的:

<script>
function slideUpClose(el) {
    var panel = document.getElementsByClassName(el);
    panel.style.transition = "top 0.5s ease-out 0s";    
    panel.style.top = "-1000px";    
}
</script>

有一点风格

<style>
    #selection {background:#f1f1f1; width:600px; height:300px;}
</style>

和 HTML:

<div id="selection" class="slideUp">Content heading
    <div>
        <button class="close_button" id="close_this_content_panel" onclick="slideUpClose('slideUp')">Click to close</button>
        <p>Some content goes here</p>
    </div>
</div>

我正在寻找的是当单击按钮时,内容面板应该向上滑动并滑出窗口。我已经设法使它与 document.getElementById 一起使用,但在使其适用于类名时遇到了问题。非常感谢任何建议!

最佳答案

基本上 document.getElementsByClassName 会返回一个 nodeList

var panel = document.getElementsByClassName(el);
Array.from(panel).forEach(function(elm){
 elm.style.transition = "top 0.5s ease-out 0s";    
 elm.style.top = "-1000px"; 
});

您必须遍历每个元素以设置其样式/属性。使用 Array.from(nodeList)nodeList 转换为原生 array 对象。然后使用它的 forEach 函数遍历每个元素。

如果你的环境不支持 ES6 那么使用下面的代码,

var panel = document.getElementsByClassName(el);
for(var i=0,len=panel.length;i<len;i++){
  panel[i].style.transition = "top 0.5s ease-out 0s";    
  panel[i].style.top = "-1000px"; 
} 

关于javascript - document.getElementsByClassName 不像 getElementById 那样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37009531/

相关文章:

html - max-height 从底部裁剪图像,如何从顶部裁剪图像?

javascript - 指定 <audio> 中的 src =""是没有 .mp3 扩展名的 mp3 文件?

javascript - jQuery - bpopup 插件,我需要重现方面的帮助

javascript - 如何清除焦点上的文本区域?

javascript - 在 PHP 中调用 Javascript 函数

html - Swiper 相对于标题中其他元素的位置

javascript - 无法读取字符之间的空格

php - 在 js 变量中发送 XML

javascript - 在 OpenERP POS 模块中使用 Javascript 将数据插入数据库

javascript - 如何向对象添加新属性?