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

时间:2011-10-10 02:33:34

标签: javascript jquery

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

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

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

在每个幻灯片帖子中,我将postID递增1:

postID++;

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

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

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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您的代码中有两次这样的阻止:

$("#" + 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运行,一个将与第二个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/'
               });
        }
  });

注意:上述代码未经测试。它可能有语法错误。