Javascript 在jQuery中使用全局变量,但不运行

Javascript 在jQuery中使用全局变量,但不运行,javascript,jquery,Javascript,Jquery,我有一个密码 function myFunction(PostID){ // Get Image Src ImgSrc = $('#' + PostID + ' .myImg').attr('src'); // Set Output var PostImgOutput = $('.inf-shf-pr .Post-img') ; //Put a src in out put PostImgOutput.attr({ 'src': Img

我有一个密码

function myFunction(PostID){    
    // Get Image Src
    ImgSrc = $('#' + PostID + ' .myImg').attr('src');

    // Set Output
    var PostImgOutput = $('.inf-shf-pr .Post-img') ;

    //Put a src in out put
    PostImgOutput.attr({ 'src': ImgSrc });
}
运行,但如果我使用此选项:

var PostImgOutput = $('.inf-shf-pr .Post-img') ;
作为全局变量,我的代码不起作用。有什么问题

// Set Output
var PostImgOutput = $('.inf-shf-pr .Post-img') ;

function myFunction(PostID) {
    // Get Image Src
    ImgSrc = $('#' + PostID + ' .myImg').attr('src');

    //Put a src in out put      
    PostImgOutput.attr({ 'src': ImgSrc });    
}

这是因为在全局定义元素时不会加载它们。当dom就绪时,需要包装该代码

var PostImgOutput="";
$(function(){
  // Set Output
  PostImgOutput = $('.inf-shf-pr .Post-img') ;
});

全局变量
positmgoutput
必须位于document.ready事件处理程序中。这是因为当您引用
$('.inf shf pr.Post img')时,dom可能还没有准备好

就先前的条件而言:

由于函数是在稍后的某个时间调用的,所以DOM可能已经准备好了,这就是它工作正常的原因


但是,当您将其放置在函数外部时,当浏览器遇到该语句时,将执行该语句。因此,此时DOM可能还没有准备好。因此,在
document.ready

上为
PostImgOutput
赋值,您是否添加了
var PostImgOutput=$('.inf shf pr.Post img')内部文档。准备好了吗?
// Set Output
var PostImgOutput;

$(function() {
  PostImgOutput = $('.inf-shf-pr .Post-img');
});

function myFunction(PostID){

    // Get Image Src
    ImgSrc = $('#'+PostID + ' .myImg').attr('src');

    //Put a src in out put

    PostImgOutput.attr({'src': ImgSrc });

}