Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将全局变量传递给jQuery中的$(document).ready函数_Javascript_Jquery - Fatal编程技术网

Javascript 将全局变量传递给jQuery中的$(document).ready函数

Javascript 将全局变量传递给jQuery中的$(document).ready函数,javascript,jquery,Javascript,Jquery,我有一个网站,每个歌曲都有特定的字母数字ID,比如说在jQuery播放器中,MP3歌曲必须通过链接分配 jplayer的功能如下: $(document).ready(function (){ function playAudio(val) {newVal=val} $("#jquery_jplayer_1").jPlayer({ ready: function (event) { $(this).

我有一个网站,每个歌曲都有特定的字母数字ID,比如说在jQuery播放器中,MP3歌曲必须通过链接分配

jplayer的功能如下:

     $(document).ready(function (){
   function playAudio(val) {newVal=val}    

        $("#jquery_jplayer_1").jPlayer({
            ready: function (event) {
                $(this).jPlayer("setMedia", {
    mp3:"http://website.com/dlb.php?file="+newVal                       });
            },
            swfPath: "js",
            supplied: "mp3",
            wmode: "window"
        });
    });
我想为用户播放列表中的不同歌曲,因此我通过按钮
onClick
传递了歌曲ID,如下所示

  onClick="playAudio(<?php echo "'".$songid. "'"; ?>)"  
onClick=“播放音频(
无需
$(文档)。准备就绪


如果您需要更改歌曲:

var val = '12345'; // your first song
$(document).ready(function() {
    $("#jquery_jplayer_1").jPlayer({
        ready: function(event) {
            $(this).jPlayer("setMedia", {
                mp3: "http://website.com/dlb.php?file=" + val
            });
        },
        swfPath: "js",
        supplied: "mp3",
        wmode: "window"
    });
});

function playAudio(nval) {
    var val = nval;
    $("#jquery_jplayer_1").jPlayer({
        "setMedia", {
            mp3: "http://website.com/dlb.php?file=" + val
        }
    });
    // --- OR ---
    $("#jquery_jplayer_1").changeAndPlay("http://website.com/dlb.php?file=" + val);
}
更多信息:


您需要使用变量作用域

var newVal = 'default_song_to_play_if_any';

function playAudio(val){
    newVal = val;
    $("#jquery_jplayer_1").jPlayer("destroy");
    $("#jquery_jplayer_1").jPlayer({
       ready: function (event) {
          $(this).jPlayer("setMedia", {
             mp3:"http://website.com/dlb.php?file="+newVal
          });
       },
       swfPath: "js",
       supplied: "mp3",
       wmode: "window"
   });
}

//use this ready function only if you want to play a default song on load
$(document).ready(function(){
    playAudio(newVal); 
});

将ID回显到数据属性中,并在函数中使用jQuery获取它,然后去掉内联单击处理程序。@adeneo,实际上,你能描述一下吗?我不想刷新页面,而且,ID出现在歌曲的播放按钮上,并且有一个列表,我无法在任何地方全局分配ID。我必须使用onClick函数来处理歌曲特定的歌曲我猜是这样的…试试
mp3:“http://website.com/dlb.php?file=“+newVal+”.mp3"
谢谢,伙计,这确实很有帮助,但我想问一件事,当单击另一个按钮时,它不会覆盖val的值。
val
是函数的参数,而不是全局变量。每个按钮都应该有一个由PHP插入的不同参数值。@AbhishekGahlot查看我的答案请检查我的代码,您可能想销毁在创建一个新的jPlayer实例之前,请查看当前的jPlayer实例。@barmar每个按钮都已经由php为不同的歌曲插入了特定的按钮,仍然不起作用,我认为这可能是player的问题。JavaScript中的嵌套函数很好。@ShutterBug代码仍然很好,它不能完全满足我的要求,因为每个用户可能都有不同的要求ent song。我不能提供song的默认值。@steveax你错了:@PeterSzymkowski这个答案说:“你不能在document.ready中定义函数,因为document.ready本身就是一个函数。”您展示的示例演示了JavaScript中的变量作用域。这可能是ShutterBug的意思,但如果是这样的话,说明就不好了。@steveax document.ready函数被替换为另一个可以获取该值的函数,因此它以这种方式工作,这就是peterszymkowki的答案在某种程度上是正确的原因。
var newVal = 'default_song_to_play_if_any';

function playAudio(val){
    newVal = val;
    $("#jquery_jplayer_1").jPlayer("destroy");
    $("#jquery_jplayer_1").jPlayer({
       ready: function (event) {
          $(this).jPlayer("setMedia", {
             mp3:"http://website.com/dlb.php?file="+newVal
          });
       },
       swfPath: "js",
       supplied: "mp3",
       wmode: "window"
   });
}

//use this ready function only if you want to play a default song on load
$(document).ready(function(){
    playAudio(newVal); 
});