javascript - 为什么不显示图像?

标签 javascript jquery html css

我对 Web 开发和整个 html、css、js 东西有点陌生,但我敢说我是一个称职的程序员,所以我至少应该知道我的代码有什么问题。但事实并非如此,我正处于一种我不想停留的愤怒沮丧状态。

我的目标是以 Power Point 演示文稿的相同方式创建一个完整的在线类(class):可点击的对象使事物出现并引导到其他页面;以及按顺序出现的图像动画。

我之前转录到网页上的“幻灯片”没有任何问题,但最后一张让我头疼。 我的页面主要包含通过 <img> 包含的图像标签,所有这些都带有适当的 id和一个或多个class值(class="class1 class2")。定位为 position: absolute;风格我把它们放在我想要的地方。 接下来是动画,这是我处理它的方式:

当文档完成加载时,这是 <body class="contentBody" onload=...>一个方法被称为:myLocalInit();它使用 jQuery 函数处理动画。这是关于它的全部代码:

function myLocalInit(){
        disablePNButtons();
        hideAll('.part');
        lowerClass('.animar',50);
        slideUpAll();
    }
function slideUpAll(){
        $(".identifica").animate({
            top: '-=50px',
            opacity: '1'
        }, 400);
        setTimeout(slideUpRest(),400);
}
function slideUpRest(){
        $(".identifica").animate({
            top: '-=50px',
            opacity: '1'
        }, 400, function(){$('#preguntas').animate({
            top: '-=50px',
            opacity: '1'
        }, 400, function(){ $('#hogar').animate({
            top: '-=50px',
            opacity: '1'
        }, 400, function(){ $('#negocio').animate({
            top: '-=50px',
            opacity: '1'
        }, 400, function(){ $('#holabank').animate({
            top: '-=50px',
            opacity: '1'
        }, 400, function(){ $('#agrobank').animate({
            top: '-=50px',
            opacity: '1'
        }, 400 function(){ $('#vr').animate({
            opacity: '1'
        }, 400)})})})})})});
}
function hideAll(class1){
        $(class1).css('opacity','0');
}

function lowerClass(class1,height){
        $(class1).css('top', '+='+height+'px');
}
function disablePNButtons(){
        UDUTU_API.gblPreviousButton.btnEnabled(false);
        UDUTU_API.gblNextButton.btnEnabled(false);
}

还有 <body>最后看起来像这样:<body class="contentBody" onload="myLocalInit();">

然后,当页面加载时,myLocalInit() 中的方法都没有了。生效,这很奇怪。但它变得更奇怪了!如果我从 myLocalInit() 中取出方法并将它们放在 onload 中事件( <body class="contentBody" onload="disablePNButtons();hideAll('.part');lowerClass('.animar',50);slideUpAll();"> ,它们在 slideUpAll() 之前生效(我通过无聊的 alert 调试发现了这一点)。

我真的不知道这个特定页面有什么问题,我对前 7 个页面进行了类似的编程并且运行良好。请,请!求求各位高手,请赐教为什么这行不通T_T

最佳答案

这可能/可能无法解决您的问题。在不调试代码的情况下很难确定确切的解决方案。只是阅读你的问题并没有让我想到任何明显的问题。因此,我可以提供一些可以解决问题并使您的代码更可靠的良好实践。

请将您的功能放在文档就绪 block 中:

// A $( document ).ready() block.
$( document ).ready(function() {
    console.log( "ready!" );
    // All your functions

    myLocalInit();
});

然后将脚本标记从 header 移动到末尾(就在结束 </body> 标记内。

这使得 javascript 非阻塞,并且仅在 DOM 准备就绪时才加载。

接下来你可以做的是,也调用 myLocalInit();在文档就绪 block 的末尾,如上所示,并将其从 body.onload 中删除。一旦加载了 DOM,它仍然会运行。

如果这些更改解决了问题,请告诉我。

关于javascript - 为什么不显示图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38632493/

相关文章:

javascript - 避免在 html 中提交多个表单

javascript - vue的图片加载问题

html - 绝对位置在ie8中不起作用

javascript - 转换为指令的 jQuery 函数在 Angular 上不起作用

javascript - 使用 jQuery 1.8.1 有多个 $(document).ready 有任何开销吗

javascript - 禁用文本框时如何在 jquery 中禁用此上下文菜单

javascript - 在 Javascript 中查询 XML

javascript - Web Audio API - 奇怪的 5.1 行为

javascript - 深克隆和浅克隆有什么区别?

javascript - 如何使 JQuery 步进器/微调器按钮在按下时更快地通过列表?