Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.07.2014, 07:43
Аватар для tart
Новичок на форуме
Отправить личное сообщение для tart Посмотреть профиль Найти все сообщения от tart
 
Регистрация: 02.07.2014
Сообщений: 6

Не разобрался с применением js и куки для нескольких select
Здравствуйте!
Нужен совет.

Есть select с option

<select name="select" onchange="fn()">
              <option>1</option>
              <option>2</option>
              <option>3</option>
	</select>

И js

function getCookie(name) {
    var matches = document.cookie.match(new RegExp(
      "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
    ))
    return matches ? decodeURIComponent(matches[1]) : undefined
}       
            function setCookie(name, value, props) {
    props = props || {}
    var exp = props.expires
    if (typeof exp == "number" && exp) {
        var d = new Date()
        d.setTime(d.getTime() + exp*3153600000)
        exp = props.expires = d
    }
    if(exp && exp.toUTCString) { props.expires = exp.toUTCString() }
 
    value = encodeURIComponent(value)
    var updatedCookie = name + "=" + value
    for(var propName in props){
        updatedCookie += "; " + propName
        var propValue = props[propName]
        if(propValue !== true){ updatedCookie += "=" + propValue }
    }
    document.cookie = updatedCookie
 
}
            
            function fn(){
               var elem= document.getElementsByName('select')[0]
               var currentOptionIndex= elem.selectedIndex;
                setCookie('OptionIndex', currentOptionIndex);
            }
            
            
            window.onload=function(){
                var elem= document.getElementsByName('select')[0];
                elem.selectedIndex=getCookie('OptionIndex') || 1;
            }


Не понял как мне применить еще для одного select и option, js выше.
Ответить с цитированием
  #2 (permalink)  
Старый 03.07.2014, 01:08
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

tart,

<!DOCTYPE HTML>

<html>

<head>
    <title>Untitled</title>
    <meta charset="utf-8">
    <script>
        function getCookie(name) {
            var matches = document.cookie.match(new RegExp(
                "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
            ))
            return matches ? decodeURIComponent(matches[1]) : undefined
        }

        function setCookie(name, value, props) {
            props = props || {}
            var exp = props.expires
            if (typeof exp == "number" && exp) {
                var d = new Date()
                d.setTime(d.getTime() + exp * 3153600000)
                exp = props.expires = d
            }
            if (exp && exp.toUTCString) {
                props.expires = exp.toUTCString()
            }

            value = encodeURIComponent(value)
            var updatedCookie = name + "=" + value
            for (var propName in props) {
                updatedCookie += "; " + propName
                var propValue = props[propName]
                if (propValue !== true) {
                    updatedCookie += "=" + propValue
                }
            }
            document.cookie = updatedCookie

        }

        function fn(elem) {
            setCookie(elem.name, elem.selectedIndex);

        }


        window.onload = function () {
            var elems = document.getElementsByTagName('select');
            for (var i = 0; i < elems.length; i++) {
                var elem = elems[i],
                    c = getCookie(elem.name);

                elem.selectedIndex = c !== undefined ? c : 1;
            }

        }
    </script>
</head>

<body>
    <select name="select" onchange="fn(this)">
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <select name="select2" onchange="fn(this)">
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>

</body>

</html>
Ответить с цитированием
  #3 (permalink)  
Старый 23.07.2014, 23:45
Аватар для Globus
Аспирант
Отправить личное сообщение для Globus Посмотреть профиль Найти все сообщения от Globus
 
Регистрация: 04.03.2014
Сообщений: 76

рони, а как можно сделать, чтобы всем селектам, содержание которых берется из куков, но не является первым (selectedIndex), присваивался какой-нибудь новый класс?
Ответить с цитированием
  #4 (permalink)  
Старый 23.07.2014, 23:54
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Globus,
попробуйте самостоятельно решить этот вопрос в 52 строке if() {} ; кука есть и она не 1 то мастачим класс.
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2014, 00:48
Аватар для Globus
Аспирант
Отправить личное сообщение для Globus Посмотреть профиль Найти все сообщения от Globus
 
Регистрация: 04.03.2014
Сообщений: 76

рони,
Спасибо! Я пробую такую конструкцию

if(elem.selectedIndex > 0) { document.getElementsByTagName('select').AddClass('22')} ;


если индекс выбранного option не равен нулю, то присваивается класс 22

но не уверен, что эта конструкция хотя бы отчасти правильна, вас не затруднит указать на ошибку?
Ответить с цитированием
  #6 (permalink)  
Старый 24.07.2014, 01:05
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Globus,
когда доки читать начнёте

if(c !== undefined && c !== '1') {elem.className = '22'};
Ответить с цитированием
  #7 (permalink)  
Старый 24.07.2014, 01:50
Аватар для Globus
Аспирант
Отправить личное сообщение для Globus Посмотреть профиль Найти все сообщения от Globus
 
Регистрация: 04.03.2014
Сообщений: 76

работает! спасибо!
Ответить с цитированием
  #8 (permalink)  
Старый 26.07.2014, 21:00
Аватар для Globus
Аспирант
Отправить личное сообщение для Globus Посмотреть профиль Найти все сообщения от Globus
 
Регистрация: 04.03.2014
Сообщений: 76

Рони, подскажите, пожалуйста, в этого же скрипта можно ли присваивать "22" класс селекту, у которого индекс option перестал быть равным = '1' ?
Ответить с цитированием
  #9 (permalink)  
Старый 27.07.2014, 20:56
Аватар для Globus
Аспирант
Отправить личное сообщение для Globus Посмотреть профиль Найти все сообщения от Globus
 
Регистрация: 04.03.2014
Сообщений: 76

А главное - Важный вопрос: можно ли, чтобы куки с каждого селекта записывались не при onchange="fn()" , а при нажатии на одну кнопку, например, <input type="button" name="save" value="saveall"> ?
Ответить с цитированием
  #10 (permalink)  
Старый 27.07.2014, 21:00
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,064

Globus,
можно сделайте циклом обход селектов ... сам сам ... пора уже
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Посоветуйте как улучшить код для работы с history api [ jquery + js + history api ] Geo Ваши сайты и скрипты 0 12.01.2014 00:41
Дописать JS и PHP валидатор для телефона 3-3-4 conductor3 Работа 1 11.05.2010 00:01
массив options для select (в IE) Polkan Internet Explorer 8 06.05.2010 17:31
эмуляция события click для элемента select Polo Events/DOM/Window 4 16.12.2009 13:29
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36