从字体真棒图标播放声音
Play sound from a font awesome icon
我正在尝试在单击超赞字体图标时播放声音。
我有一个页面,其中 post 的列表是从数据库中提取的,我正在使用 jinja 来显示它们。每个 post 都有一个图标,可以单击该图标并读出 post 的内容。
如果我只有一个音频控件,这是可行的,但我宁愿有一个小图标,而不是整个音频控件。
我的问题是,当我添加代码使其成为图标时,它似乎只 运行 for 循环中第一个结果的 'src'。我检查了页面以检查每个图标 'srcs' 是什么,它们都不同且正确,但单击图标输出错误的音频。
我认为这与具有 ID 的 onclick 事件有关,并且 ID 始终设置为我的 forloop 中的第一个元素。
我试过了 post - Play Sound when Font Awesome Icon is Clicked
HTML
{% extends "layout.html" %}
{% block content %}
<!--Using Jinja2 to get run code in HTML-->
<legend class="border-bottom mb-4">All Posts</legend>
{% for post in posts %}
<article class="media content-section">
<div>
<i class="fas fa-volume-up" onclick="playContent()" style="color: blue;"></i>
<audio id="content">
<source src="link-to-blob-storage/{{ post.ttsFileName }}" type="audio/mp3">
</audio>
<script>
var audio = document.getElementById("content");
function playContent() {
audio.play();
}
</script>
</div>
</article>
{% endfor %}
{% endblock content %}
尝试这样的事情:
{% for post in posts %}
<audio id="audio_{{post.ttsFileName}}">
<source src="{{post.ttsFileName}}" type="audio/mp3">
</audio>
<i onclick="document.getElementById('audio_{{post.ttsFileName}}').play()"></i>
{% endfor %}
我正在尝试在单击超赞字体图标时播放声音。
我有一个页面,其中 post 的列表是从数据库中提取的,我正在使用 jinja 来显示它们。每个 post 都有一个图标,可以单击该图标并读出 post 的内容。
如果我只有一个音频控件,这是可行的,但我宁愿有一个小图标,而不是整个音频控件。
我的问题是,当我添加代码使其成为图标时,它似乎只 运行 for 循环中第一个结果的 'src'。我检查了页面以检查每个图标 'srcs' 是什么,它们都不同且正确,但单击图标输出错误的音频。
我认为这与具有 ID 的 onclick 事件有关,并且 ID 始终设置为我的 forloop 中的第一个元素。
我试过了 post - Play Sound when Font Awesome Icon is Clicked
HTML
{% extends "layout.html" %}
{% block content %}
<!--Using Jinja2 to get run code in HTML-->
<legend class="border-bottom mb-4">All Posts</legend>
{% for post in posts %}
<article class="media content-section">
<div>
<i class="fas fa-volume-up" onclick="playContent()" style="color: blue;"></i>
<audio id="content">
<source src="link-to-blob-storage/{{ post.ttsFileName }}" type="audio/mp3">
</audio>
<script>
var audio = document.getElementById("content");
function playContent() {
audio.play();
}
</script>
</div>
</article>
{% endfor %}
{% endblock content %}
尝试这样的事情:
{% for post in posts %}
<audio id="audio_{{post.ttsFileName}}">
<source src="{{post.ttsFileName}}" type="audio/mp3">
</audio>
<i onclick="document.getElementById('audio_{{post.ttsFileName}}').play()"></i>
{% endfor %}