为什么我的javascript变量没有在我的函数中正确使用

Why is my javascript variable not being used properly in my function?

本文关键字:我的 函数 javascript 变量 为什么      更新时间:2023-09-26

我正在创建一个可能在单个页面上包含多个jQuery幻灯片的站点。我使用的第三方幻灯片代码要求每个幻灯片都有一个唯一的ID,在javascript和存放图像的div中使用。

目前我正在生成一个随机数的页面:

var postID = ((Math.random() * 1e6) | 0);)

在每个幻灯片中,我将postID增加1:

postID++;

以避免重复的数字。然而,它似乎没有在javascript函数中使用正确的postID:

$(function() {$("#" + postID).webwidget_slideshow_dot({...)})}

这是该网站的链接:http://mobilegamepatterns.com

任何帮助都将非常感激!

这个代码块在你的代码中出现了两次:

$("#" + postID).webwidget_slideshow_dot({
                    slideshow_time_interval: '',
                    slideshow_window_width: '320',
                    slideshow_window_height: '480',
                    slideshow_title_color: '#17CCCC',
                    soldeshow_foreColor: '#000',
                    directory: 'http://mobilegamepatterns.s3.amazonaws.com/images/'
                });

我想你认为,因为它们在你的页面中的位置,一个将与第一个ID运行,一个将与第二个运行。但实际上,它们都将与第二个运行。它们都将在DOM准备好之后运行,并且都将使用postID的当前值。由于您是在页面加载时更改postID,因此它将是最后一个postID++之后的任何内容。

如果你要这样写你的页面,你不需要运行这段代码onReady,而是在你给div分配新的ID后立即运行它。

您可以更干净,在页面加载时完成所有操作,而根本不使用id。

$(function() {
    var slideShowDivs = $('.webwidget_slideshow_dot');
        $.each(slideShowDivs, function(i, currentDiv) {
              $(currentDiv).webwidget_slideshow_dot({
                    slideshow_time_interval: '',
                    slideshow_window_width: '320',
                    slideshow_window_height: '480',
                    slideshow_title_color: '#17CCCC',
                    soldeshow_foreColor: '#000',
                    directory: 'http://mobilegamepatterns.s3.amazonaws.com/images/'
               });
        }
  });

注意:上面的代码是未经测试的。可能有语法错误