|
|
Модератор форума: JonMagon |
Сообщество uCoz Вебмастеру JavaScript, Flash и прочие технологии Функция стала не явно возвращать undefined |
Функция стала не явно возвращать undefined |
Проблема в том, что сначала функция отрабатывает как надо и возвращает результат (проверял с помощью return), но потом не явно возвращает undefined и в результат записывается этот самый undefined. Как заставить функцию выбрать явный результат?
|
|
Если вам не сложно. Зайдите к примеру на эту страницу http://multitak.ru/publ/4-1-0-13#4 для вас я уже выбрал серию это будет серия 4 и она выберется. Но зайдите http://multitak.ru/publ/4-1-0-13#21 это серии не существует, скрипт должен вывести вам первую серию. Но он ее не выберет, вернет undefined хотя отработает как надо.
Сообщение отредактировал Игорь_ - Вторник, 27 Май 2014, 23:47:26
|
Игорь_, мб все же функцию предоставите?
askwiki.ru - найди ответ на свой вопрос.
|
Код function mvideo(video) { jwplayer("customplayer").setup({ 'flashplayer': "/pl/player.swf", 'skin': '/pl/sl.xml', 'bufferlength': '4', 'allowfullscreen':'true', 'allowscriptaccess':'always', 'logo.file': '/demonewtheme/img/logo.png', 'logo.position':'top-right', 'plugins': 'timeslidertooltipplugin-3', 'timeslidertooltipplugin.fontweight': 'bold', 'timeslidertooltipplugin.fontcolor': '#DDD', 'timeslidertooltipplugin.image': '/pl/tooltip.png', 'timeslidertooltipplugin.fontsize': '11', 'timeslidertooltipplugin.font': 'Helvetica', 'stretching': 'uniform', file: "http://"+video+".mp4", image: "http://"+video+".jpeg", width: 780, height: 430, abouttext: 'multitak', aboutlink: 'http://multitak.ru', events:{ onError: function() { if(video.search(/uploaded\/\d{1,2}\//) > -1){ video = video.replace(/\d{1,2}\//,''); jwplayer().load({file: "http://"+video+".mp4"}).play(); }else{ ksetNum = video.match(/\d{2}\//) if(ksetNum[0].indexOf(0) == 0) ksetNum = ksetNum[0].slice(1,3); video = video.replace('uploaded/','uploaded/'+ksetNum) jwplayer().load({file: "http://"+video+".mp4"}).play(); }} } }); } if (!!location.hash) { var str = location.hash.substr(1); var p = $('#videolist li'); if(str>noticedEpizode||$(p[str-1]).attr('alt') == 'undefined'){ $("#videolist li").removeClass();mvideo($("#videolist li:first").attr('alt'));$("#videolist li:first").addClass("play"); } mvideo($(p[str-1]).attr('alt'));$(p[str-1]).addClass('play'); }else{ $("#videolist li:first").addClass("play"); mvideo($("#videolist li:first").attr('alt')); } Вот часть того самого кода |
Выделенное порадовало Попробуйте так: Код if(location.hash){ var str=location.hash.split("#")[1].match(/\d+/),p=$('#videolist li'); if(str>noticedEpizode|| typeof $(p[str-1]).attr('alt')=="undefined"){ $("#videolist li").removeClass(); mvideo($("#videolist li:first").attr('alt')); $("#videolist li:first").addClass("play"); }else{ mvideo($(p[str-1]).attr('alt')); $(p[str-1]).addClass('play'); }; }else{ $("#videolist li:first").addClass("play"); mvideo($("#videolist li:first").attr('alt')); }; |
Прикрепления:
6228414.jpg
(44.7 Kb)
Сообщение отредактировал Игорь_ - Четверг, 29 Май 2014, 12:58:08
|
location.hash возвращает строку, а if отрабатывает только boolean типы. чтобы отработать location.hash нужно проверить ее на истину. Но дело не в location.hash, а в том, почему в случае неверно выбранной серии возвращает undefined хотя и отрабатывает функция как надо.
Добавлено (29 Май 2014, 21:09:22) |
Нет не в этом. Там все правильно. Проблема была в том, что после условия. Стоял код плеера. И получается 1 раз норм все было. А второй раз он выбирал серию которой нет. Я просто поставил то что под условием вперед. Код if(str>noticedEpizode||$(p[str-1]).attr('alt') == 'undefined'){ $("#videolist li").removeClass();mvideo($("#videolist li:first").attr('alt'));$("#videolist li:first").addClass("play"); } mvideo($(p[str-1]).attr('alt'));$(p[str-1]).addClass('play'); |
| |||
| |||