<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<title> 页面名称 </title>
<style type="text/css">
.run {
background-color: #f99;
}
</style>
</head>
<body>
<audio src="F:\My Music\流行歌曲\S.H.E—十面埋伏.mp3" controls="controls" autoplay="autoplay" id="audio">你的浏览器不支持audio标签</audio>
<ul class="list">
<li class="run"> S.H.E—十面埋伏.mp3</li>
<li> 青花瓷.mp3 </li>
<li> 星月神话.mp3 </li>
</ul>
<script type="text/javascript">
var slice = Array.prototype.slice;
var audio = document.querySelector("audio");
var items = slice.call(document.querySelectorAll(".list li"),0);
items.forEach(function(item){
item.addEventListener("click", function(){
var run = document.querySelector("li.run");
run.className = "";
item.className = "run";
//去掉前后的空格
var str1 = run.innerHTML.replace(/^\s+|\s+$/g,"");
var str2 = item.innerHTML.replace(/^\s+|\s+$/g,"");
//谷歌浏览器audio.src获取的地址中的中文是经过编码的,要用decodeURI()解码
var src = decodeURI(audio.src).replace(str1,str2);
console.log(src); //看看replace()是不是真的替换了
audio.src = src;
});
});
</script>
</body>
</html>
你看看replace()是不是真的替换了
比如run.innerHTML 获取的li元素内容前后可能有空格。
把li元素内容前后空格删除,也可以用下面方法去掉前后的空格
str = run.innerHTML.replace(/^\s+|\s+$/g,"")
li里面获取的文件路径不对吧,加上对应的路径再试试。
或者是把音频文件所在的目录直接写到js代码里
//当前点击音频文件名
var name = item.innerHTML.replace(/^\s+|\s+$/g, "");
//音频文件所在的目录
var path = "music/";
var src = path+name;
console.log(src);
audio.src = src;
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y