如果未找到动态音频src或为null,则使用javascript隐藏HTML5音频播放器
第一篇关于Stackoverflow的文章,请耐心听我说。 我有一个JQMobile web应用程序,它通过JSON生成动态音频文件链接,并根据id附加音频播放器。我试图在找不到src时隐藏播放器 php/mysql/jqm脚本正在工作,我似乎无法得到if/else部分,它总是显示播放器是否为空如果未找到动态音频src或为null,则使用javascript隐藏HTML5音频播放器,javascript,jquery,html,jquery-mobile,audio,Javascript,Jquery,Html,Jquery Mobile,Audio,第一篇关于Stackoverflow的文章,请耐心听我说。 我有一个JQMobile web应用程序,它通过JSON生成动态音频文件链接,并根据id附加音频播放器。我试图在找不到src时隐藏播放器 php/mysql/jqm脚本正在工作,我似乎无法得到if/else部分,它总是显示播放器是否为空 <html> <head> <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.
<html>
<head>
<script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<script type="text/javascript">
var serviceURL = "http://localhost/Apps/services/";
$(document).on('pageshow', '#detailsPage', function(event) {
var id = getUrlVars()["id"];
$.getJSON(serviceURL + 'getartist.php?id='+id, displayArtist);
});
function displayArtist(data) {
var artistDetVal = data.item;
console.log(artistDetVal);
$('#artistDetPic').attr('src', 'pics/lg/' + artistDetVal.picture);
$('#fullName').text(artistDetVal.firstName + ' ' + artistDetVal.lastName);
$('#artistDetTitle').text(artistDetVal.bio);
$('#city').text(artistDetVal.city);
$('#audioBio').attr('src', 'audio/' + artistDetVal.audio) .detach().appendTo($("#audioPlayer"));
}
function getUrlVars() {
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
hash = hashes[i].split('=');
vars.push(hash[0]);
vars[hash[0]] = hash[1];
}
return vars;
}
</script>
<body>
<script type="text/javascript">
$(document).ready(function(){
function displayArtist(data) {
var artistDetVal = data.item;
$('#audioBio').text(artistDetVal.audio);
if (artistDetVal.audio>0) {
$("#audioPlayer").show();
}
else {
$("#audioPlayer").hide();
}
}
});
</script>
<audio id="audioPlayer" controls="controls"><source id="audioBio" src=""/></audio>
</body>
</html>
var serviceURL=”http://localhost/Apps/services/";
$(文档)。on('pageshow','#detailsPage',函数(事件){
var id=getUrlVars()[“id”];
$.getJSON(serviceURL+'getArtister.php?id='+id,displayArtister);
});
函数显示艺术家(数据){
var artistDetVal=data.item;
控制台日志(artistDetVal);
$('artistDetPic').attr('src','pics/lg/'+artistdetpal.picture);
$(“#全名”).text(artistDetVal.firstName+“”+artistDetVal.lastName);
$(#artistDetTitle').text(artistDetVal.bio);
$(#city').text(artistDetVal.city);
$('audioBio').attr('src','audio/'+artistDetVal.audio).detach().appendTo($('audioPlayer'));
}
函数getUrlVars(){
var vars=[],散列;
var hashes=window.location.href.slice(window.location.href.indexOf('?')+1).split('&');
for(var i=0;i0){
$(“#audioPlayer”).show();
}
否则{
$(“#audioPlayer”).hide();
}
}
});
似乎您的函数displayArtist
被声明了两次,这是一个“否”。另外,第二个声明,即控制是否显示或隐藏玩家的声明,永远不会被调用
尝试将显示/隐藏播放机的逻辑放在您的第一个displayArtist
实例中,并完全删除副本
function displayArtist(data) {
var artistDetVal = data.item;
console.log(artistDetVal);
$('#artistDetPic').attr('src', 'pics/lg/' + artistDetVal.picture);
$('#fullName').text(artistDetVal.firstName + ' ' + artistDetVal.lastName);
$('#artistDetTitle').text(artistDetVal.bio);
$('#city').text(artistDetVal.city);
$('#audioBio').attr('src', 'audio/' + artistDetVal.audio).detach().appendTo($("#audioPlayer"));
$('#audioBio').text(artistDetVal.audio);
if (artistDetVal.audio>0) {
$("#audioPlayer").show();
}
else {
$("#audioPlayer").hide();
}
}
另外,如果artistDetVal.audio
是一个字符串,则可能需要使用条件if(artistDetVal.audio.length>0)