Почему моя переменная javascript не используется должным образом в моей функции?

#javascript #jquery

#javascript #jquery

Вопрос:

Я создаю сайт, который может включать несколько слайд-шоу jQuery на одном сайте. Код слайд-шоу третьей стороны, который я использую, требует, чтобы у каждого слайд-шоу был уникальный идентификатор, который используется в javascript и div, в котором хранятся изображения.

В настоящее время я генерирую случайное число на странице:

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

и в каждом сообщении слайд-шоу я увеличиваю postID на 1:

 postID  ;
  

чтобы избежать дублирования чисел. Однако, похоже, что он не использует правильный postID в функции javascript:

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

Вот ссылка на сайт:http://mobilegamepatterns.com

Буду признателен за любую помощь!

Комментарии:

1. Нам нужно немного больше, чем это. Насколько я могу судить, ваш postID никогда не используется на странице.

2. Здесь: ((Math.random() * 1e6) | 0);) , почему ; не в конце инструкции?

3. Пожалуйста, не начинайте просто новый вопрос из-за небольшой проблемы с предыдущим, который вы задали. Если вы столкнулись с проблемами с кодом, указанным вам в ранее опубликованном вопросе, прокомментируйте этот пост, и люди уточнят ответ, чтобы лучше помочь вам.

Ответ №1:

У вас этот блок в вашем коде дважды:

 $("#"   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/'
                });
  

Я думаю, вы думаете, что из-за того, где они расположены на вашей странице, один будет запускаться с первым идентификатором, а другой — со вторым. Но на самом деле, они оба будут выполняться со вторым. Они оба будут запущены после того, как DOM будет готов, и они оба будут использовать текущее значение postID. Поскольку вы меняете почтовый идентификатор во время загрузки страницы, он будет таким, какой он есть после последнего почтового идентификатора .

Если вы собираетесь написать свою страницу таким образом, вам не нужно запускать этот код заранее, а вместо этого запускать его сразу после присвоения div нового идентификатора.

Вы могли бы быть чище и делать все это при загрузке страницы, вообще не используя идентификаторы.

 $(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/'
               });
        }
  });
  

ПРИМЕЧАНИЕ: Приведенный выше код не протестирован. В нем могут быть синтаксические ошибки.