Javascript 为什么单击jQuery事件后mp3url变量不起作用

Javascript 为什么单击jQuery事件后mp3url变量不起作用,javascript,jquery,audio-player,Javascript,Jquery,Audio Player,我想在jqueryclick事件之外显示“mp3Url”变量。实际上,从下面的代码片段中是否有可能?我看了很多文章,但不起作用 <script> var mp3Url; // NOW I CLICK album-poster TO GET CURRENT SONG ID $(".album-poster").on('click', function(e){ mp3Url = $(this).attr('data-mp3'); });

我想在jqueryclick事件之外显示“mp3Url”变量。实际上,从下面的代码片段中是否有可能?我看了很多文章,但不起作用

<script>

var mp3Url;
        
// NOW I CLICK album-poster TO GET CURRENT SONG ID
$(".album-poster").on('click', function(e){

    mp3Url = $(this).attr('data-mp3');

});

//console.log( mp3Url );

const ap = new APlayer({
    container: document.getElementById('aplayer'),
    listFolded: true,
    audio: [
            {
                name: 'Invisible Beauty',
                artist: 'Artist',
                url: mp3Url, // Here is the variable
                cover: 'photo.jpg'
            },
    ]
        
});

</script>

var-mp3Url;
//现在,我单击专辑海报以获取当前歌曲ID
$(“.album poster”)。在('click',函数(e){
mp3Url=$(this.attr('data-mp3');
});
//console.log(mp3Url);
const ap=新的APlayer({
容器:document.getElementById('aplayer'),
李斯特:是的,
音频:[
{
名称:"看不见的美",,
艺术家:“艺术家”,
url:mp3Url,//这是变量
封面:'photo.jpg'
},
]
});

这取决于您想何时显示它。在当前表单中,脚本执行三件事

1. Declare mp3Url variable (no value assigned)
2. Create and register a function to be execute whenever album poster is clicked.
    a. Assign a value to the variable above (whenever the poster is clicked).
3. Print value of the above variable to console.
在步骤2中,您刚刚创建了一个函数,并“注册”了它,以便在将来响应某个事件时执行。当执行步骤3时,
mp3Url
变量仍将具有
undefined
值,因为浏览器将立即同时运行步骤1、2、3,而不给用户单击任何内容的机会。稍后,每当用户单击海报时,将执行2系列中的子步骤

如果希望在“用户单击海报”时打印值,只需将console语句移动到事件处理程序函数中即可。这是必需的,因为浏览器只会在用户操作时运行事件处理程序内部编写的代码


PS:您可以在事件处理程序中移动变量。

在声明APlayer not的上下文中不存在mp3Url之前,尝试此操作

var ap;
$(".album-poster").on('click', function(e){
    var mp3Url = $(this).attr('data-mp3');
    ap = new APlayer({
        container: document.getElementById('aplayer'),
        listFolded: true,
        audio: [
            {
                name: 'Invisible Beauty',
                artist: 'Artist',
                url: mp3Url, // Here is the variable
                cover: 'photo.jpg'
            },
        ]
    });
});

此函数的内部控制台正在工作,但我需要事件函数的外部。在单击按钮之前,它不会有值。为什么您需要事件之外的值?您可能需要在事件内部执行其他代码/调用函数。仅在事件内部调用函数,但在事件外部调用函数时显示函数未定义。请给我举个例子好吗?鉴于原始问题和代码可以回答问题,评论不是为了问更多的问题。如果你想完成更多的任务,我建议你提出一个新问题,发布更多代码,说出你真正想完成的任务。请检查这个问题。我已经添加了完整的代码。