Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   onchange не запоминает выбор в option select (https://javascript.ru/forum/dom-window/47490-onchange-ne-zapominaet-vybor-v-option-select.html)

feniks81 26.05.2014 14:17

onchange не запоминает выбор в option select
 
<center>
    <iframe name='film_main' id='film_main' src='{THEME}/images/tv.png' width='800' height='500' frameborder='0'></iframe>

    <br>
    <select size='1' onchange="javascript:if(document.getElementById('film_main')) document.getElementById('film_main').src=this.value;">

       <option selected='selected' value='{THEME}/images/tv.png'>Выберите серию </option>
       <option value="адрес фрейма1">01. Серия</option>
       <option value="адрес фрейма2">02. Серия</option>

    </select>
    </center>


Строчка в коде номер 5 - работает прекрасно. она подгружает в строчку 2 то что в строках 8 и 9 (value="")

Но я не могу дописать к onchange - window.location.reload() так чтобы после перезагрузки страницы выбор сохранился.

например выбрали серию 2 - перезагрузилась страница - затем установка в ифрейм url серии 2.

очень нужна перезагрузка. перепробовала комбинировать код 30 способами - у меня не вышло. может нужен метод какой-то.. все еще учусь с яваскриптом.

WorM32 26.05.2014 14:47

Нужно использовать не location.reload(), а установку location нужной ссылки, например:
window.location = 'http://example.com/'

feniks81 26.05.2014 15:11

Да, верно, но дело в том что я не создаю для каждой серии отдельную страницу, дабы избежать дублирования в индексации.

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

это все отлично. необходимо только чтоб при выборе страница ПЕРЕЗАГРУЗИЛАСЬ и сохранился выбор.

т.е. перезагрузка необходима для накручивания счетчика показа рекламы. никак не могу дописать к ohchange нужное....

в противном случае придется делать для каждой серии свою страничку а в переключатель вставить window.location = 'http://example.com/'....

WorM32 26.05.2014 15:49

Создать отдельную страницу не обязательно. Достаточно в адрес страницы передать: либо get-параметры, либо #hash и работать уже с ними. Механиз будет тот же, через window.location = .

feniks81 26.05.2014 15:56

Ррррррррррр.. сканирую все страницы в выдаче гугла по запросу get window.location.. Как найду - поделюсь решением. спасибо бро

feniks81 26.05.2014 16:41

WorM32,
не получается. сможешь сделать для меня за 100 рублей, пойдет вам на пиво? :yes:

Erolast 26.05.2014 16:45

Не очень ясна задача... нужно кодом из iframe перезагружать родительский документ? Или запоминать выбранный ролик?
Если первое, то
parent.location.reload();

Запомнить выбранный ролик можно через cookie или WebStorage. WebStorage позволяет единоразово хранить большие объемы информации, но поддерживается лишь в современных браузерах.

feniks81 26.05.2014 17:10

Erolast,

http://jsfiddle.net/rfsa5/20/

посмотрите как это работает. при выборе серии - урл подгружается в ифрейм без перезагрузки страницы.

необходимо чтобы при выборе серии было тоже самое - только с обновлением всей страницы + подзагрузка урл в фрейм.

наверное подойдет ваше решение "Запомнить выбранный ролик можно через cookie"

WorM32 26.05.2014 17:38

Я правильно понимаю, что нужно что-то типа этого http://jsfiddle.net/rfsa5/25/

var select = document.getElementById('select_film'),
    frame = document.getElementById('film_main');

function onSelectFilmChange () {
    var value = this.value;
    saveFilm(value);
    window.location.reload();
}

function saveFilm(url) {
    localStorage.setItem('film_url', url);
}

function getFilm () {
     return localStorage.getItem('film_url') || '';   
}

$(function () {
    var film = getFilm();
    if (!film) {
        return;
    }
    
    var options = select.options;
    for (var i = 0, l = options.length; i < l; i++) {
        if (options[i].value == film) {
            select.selectedIndex = i;   
        }
    }
});

select.addEventListener('change', onSelectFilmChange, false);

Erolast 26.05.2014 17:52

Лучше таки через куки, везде работать будет - http://learn.javascript.ru/play/Th3LB.
И да, window.onload, как я написал - это плохо. В текущем виде скрипт будет ждать полной загрузки страницы, включая изображения, что не нужно. Выполняться он должен после загрузки DOM, просто кроссбраузерно и без использования сторонних библиотек это заняло бы довольно много строк, для примера-то.


Часовой пояс GMT +3, время: 10:05.