首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我有一个脚本,使一个模式出现时,一个按钮被点击。有什么办法来改进它,使模态出现得更快吗?

我有一个脚本,使一个模式出现时,一个按钮被点击。有什么办法来改进它,使模态出现得更快吗?
EN

Stack Overflow用户
提问于 2022-09-27 15:30:46
回答 1查看 31关注 0票数 0

该模式包含文本“添加到购物车”,并显示在单击任何添加到购物车按钮。我没有写这个脚本,我对JS知之甚少,但我希望能提高模态外观的速度。在单击按钮后,该模式需要2-6秒才能出现,我想知道这是否是由于我在这个脚本中可以控制的任何东西。在我看来,脚本加载的内容不多(模式只是文本和容器),所以我猜测延迟是由动画设置或脚本控制之外的其他因素造成的。有人能告诉我我的想法是否正确吗?

代码语言:javascript
复制
<script>
        window.addEventListener('load', function (event) {
                        $(window).scroll(function(){
  var numPix = 200;
  var op = (($(document).height() - $(window).height()) - $(window).scrollTop()) / numPix;
    if( op <= 0 ){
        $("#sticky").hide();
    } else {
        $("#sticky").show();
    }
    $("#sticky").css("opacity", op ); 
});
            $(".addToCart").removeClass("addToCartHide");
            $('.addToCart').click(function(){
                var skuUrl = "/transaction/addtocartbysku?sku=" + $(this).attr("data-id") + "&quantity=1";
                var xhttp = new XMLHttpRequest();
                xhttp.open("POST", skuUrl, false);
                xhttp.send();
                $("#snackbar").animate( {"opacity": "1"}, 1000, "swing" );
                setTimeout(function() {
                    $("#snackbar").animate( {"opacity": "0"}, 1000, "swing" );
                }, 3000);
            });
        });
    </script>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-27 18:22:23

@epascarello找到了正确答案。由于动画是在同步ajax调用之后出现的,所以该模式出现得很慢。更新后的代码以更正顺序并使ajax调用异步:

代码语言:javascript
复制
<script>
        window.addEventListener('load', function (event) {
                        $(window).scroll(function(){
  var numPix = 200;
  var op = (($(document).height() - $(window).height()) - $(window).scrollTop()) / numPix;
    if( op <= 0 ){
        $("#sticky").hide();
    } else {
        $("#sticky").show();
    }
    $("#sticky").css("opacity", op ); 
});
            $(".addToCart").removeClass("addToCartHide");
            $('.addToCart').click(function(){
                var skuUrl = "/transaction/addtocartbysku?sku=" + $(this).attr("data-id") + "&quantity=1";
                var xhttp = new XMLHttpRequest();
                $("#snackbar").animate( {"opacity": "1"}, 1000, "swing" );
                setTimeout(function() {
                    $("#snackbar").animate( {"opacity": "0"}, 1000, "swing" );
                }, 3000);
                xhttp.open("POST", skuUrl, true);
                xhttp.send();
            });
        });
    </script>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73870164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档