如何在javascript中使用class而不是id

Posted

技术标签:

【中文标题】如何在javascript中使用class而不是id【英文标题】:How to use class insted of id in javascript 【发布时间】:2014-05-16 03:06:05 【问题描述】:

我想在下面的脚本中使用 class 而不是 id.... 我想要一个 mp3 列表,每个都有对应的按钮,但是当我点击任何播放按钮时,它会播放第一个 mp3。

<!DOCTYPE html>
<html>       
    <body>
        <button onclick="playVid()" type="button">Play</button>
        <audio controls id="video1" style="display: none;">
            <source src="http://localhost/astrorecords/wp-content/uploads/2014/05/280.mp3" type="audio/mp3">
        </audio>
        <script>
            var myVideo=document.getElementById("video1");
            function playVid()  
                myVideo.play();
                var obj = document.getElementById("video1"); 
                if (obj)  
                    obj.style.display='block'; 
                 
             
        </script>
    </body>
</html>

【问题讨论】:

查询类无法实现您要的解决方案,您更感兴趣的是上下文以及作用于(点击)的元素。 【参考方案1】:

您可以使用 document.getElementsByClassName() 代替 document.getElementById()

var myVideo = document.getElementsByClassName("video1")[0];

function playVid() 
    myVideo.play();
    var obj = document.getElementsByClassName("video1")[0];
    if (obj) 
        obj.style.display = 'block';
    

Fiddle Demo

【讨论】:

您好,谢谢!回复.....我想为每个 mp3 添加一个 mp3 列表和播放按钮,它仍然播放第一个 mp3,请提供任何帮助【参考方案2】:

您应该使用 on click 的事件对象和 target 属性(您刚刚单击的 DOM 元素)。示例:

function playVid(event) 
    var myVideo = event.target.nextSibling;
    myVideo.play();
    myVideo.style.display = 'block';
;

在显示当前元素之前,您很可能需要遍历所有元素并隐藏它们。

祝你好运。

【讨论】:

以上是关于如何在javascript中使用class而不是id的主要内容,如果未能解决你的问题,请参考以下文章

如何使用来自目标c的同名类而不是swift

如何使用 Typescript 而不是 Javascript 在解析服务器中编写云代码?

jquery 是如何通过 class 来获取元素的?

如何激活已经运行过的Activity, 而不是重新启动新的Activity

如何使用 google.load 加载 javascript 文件,而不是直接使用 freemarker 模板语言中的标签?

如何在javascript中强制添加而不是串联[重复]