如何在jquery mobile加载的每个页面上执行相同的javascript函数

如何在jquery mobile加载的每个页面上执行相同的javascript函数,javascript,html,jquery-mobile,Javascript,Html,Jquery Mobile,我需要帮助来整理这段代码,目标是为每个页面加载显示阵列图像3秒钟 第一页还可以。问题是,在第一个页面加载后,每个页面的图像变化都更快 $('.banners')。在(“页面创建”,函数(事件){ 清晰间隔(trocarImagem); 让cmpBanner1=localStorage.getItem(“cmpBanner1”); 让cmpBanner2=localStorage.getItem(“cmpBanner2”); 让cmpBanner3=localStorage.getItem(“

我需要帮助来整理这段代码,目标是为每个页面加载显示阵列图像3秒钟

第一页还可以。问题是,在第一个页面加载后,每个页面的图像变化都更快


$('.banners')。在(“页面创建”,函数(事件){
清晰间隔(trocarImagem);
让cmpBanner1=localStorage.getItem(“cmpBanner1”);
让cmpBanner2=localStorage.getItem(“cmpBanner2”);
让cmpBanner3=localStorage.getItem(“cmpBanner3”);
设cmpLink1=localStorage.getItem(“cmpLink1”);
设cmpLink2=localStorage.getItem(“cmpLink2”);
设cmpLink3=localStorage.getItem(“cmpLink3”);
设imagens=[“adm/img/mkt/”+cmpBanner1,“adm/img/mkt/”+cmpBanner2+”,“adm/img/mkt/”+cmpBanner3+”];
设imagemAtual=0;
函数trocarImagem(){
imagemAtual=(imagemAtual+1)%3;
var teste=$('.bannerprilanador').attr('src',imagens[imagemAtual]);
}
设置间隔(trocarImagem,3000);
});

您的代码中有几个问题:

  • clearInterval应该接受setInterval作为变量,而不是通过setInterval调用的函数
  • $('.bannerPartandor').attr('src',IMAGE);-这将向每个横幅或img框添加图像,而不仅仅是在活动页面上
  • 在jquery移动应用程序中重用相同的类名是不明智的,因为所有内容都加载到DOM中,所以很有可能同时访问多个项
  • 忘了jQuery Mobile吧,它已经死了,再多的巫术也无法让它复活
  • 工作示例:


    请测试这些更改,如果您满意,请接受答案。

    !非常感谢您的帮助,我将考虑您对JQM的观察。现在帮了我很多忙,这个地方太棒了,不客气。还有一个小建议,下次当您遇到与JavaScript相关的问题时,创建一个小型JSFIDLE应用程序(就像我给您的一样)。如果人们有可以使用的代码,他们就更有可能提供帮助。尤其是当每个人都在寻求额外的声誉时:-)
    var interval;
    var imagemAtual = 0;
    
    function trocarImagem() {
      var imagens = ["https://s3.amazonaws.com/wmfeimages/wp-content/uploads/2018/09/27182802/4189366235_060e3e8e6f_z.jpg", "https://media.mnn.com/assets/images/2019/02/lexi.JPG.653x0_q80_crop-smart.jpg", "https://assets3.thrillist.com/v1/image/2709211/size/tmg-article_tall.jpg"];
      console.log(imagemAtual);
      imagemAtual = (imagemAtual + 1) % 3;
      var activePage = $.mobile.activePage;
      activePage.find('.bannerPatrocinador').attr('src', imagens[imagemAtual]);
    }
    
    $(document).on("pagecreate", '.banners', function(event) {
    
      clearInterval(interval);
    
      interval = setInterval(trocarImagem, 3000);
    
    });