我有这个代码
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 });
}
答案 0 :(得分:1)
这是因为在全局定义元素时不会加载元素。你需要在dom准备好时包装那段代码。
var PostImgOutput="";
$(function(){
// Set Output
PostImgOutput = $('.inf-shf-pr .Post-img') ;
});
答案 1 :(得分:1)
全局变量PostImgOutput
必须位于document.ready事件处理程序中。这是因为当您引用$('.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 });
}
就先前条件而言:
由于函数是在稍后的某个时间调用的,那时DOM可能已准备就绪,这就是为什么它能正常工作。
但是当你把它放在函数之外时,语句将在浏览器遇到它时执行。所以当时DOM可能还没准备好。因此,请在PostImgOutput
document.ready
分配值