Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Не разобрался с применением js и куки для нескольких select (https://javascript.ru/forum/misc/48392-ne-razobralsya-s-primeneniem-js-i-kuki-dlya-neskolkikh-select.html)

Globus 27.07.2014 22:53

Цитата:

Сообщение от рони (Сообщение 322945)
Globus,
можно сделайте циклом обход селектов ... сам сам ... пора уже

Просидел три часа к ряду, переписывал несколько раз код, ничего не удалось сделать....


function savecook(elem) {
	var sele = document.getElementsByTagName('select');
	var i;
	for (i=0; i<sele.length; i++) { 
	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 : 0;
            }

        }
    </script>
</head>

<body>
    <select name="select">
        <option>0</option>
        <option>1</option>
        <option>2</option>
    </select>
    <select name="select2">
        <option>0</option>
        <option>1</option>
        <option>2</option>
    </select>
  
<input type="button" name="save" onclick="savecook(this)" value="save_all">


:help:

рони 27.07.2014 22:58

Globus,
и где цикл который обходит все select ?

Globus 27.07.2014 23:50

Пардон, не тот кусок кода скинул, отредактировал сообщение выше... посмотрите, пожалуйста

рони 28.07.2014 00:26

Цитата:

Сообщение от Globus
savecook(elem)

Цитата:

Сообщение от Globus
savecook(this)

смотрите на строку 12 и сделайте соотвественно

Globus 28.07.2014 00:37

function savecook() {
	var sele = document.getElementsByTagName('select');
	for (var=0; i < sele.length; i++) { 
	        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 : 0;
            }

        }
    </script>


.........


<input type="button" name="save" onclick="savecook()" value="save_all">


а теперь как?

рони 28.07.2014 00:40

Globus,
откуда в строке 4 elem ?
Цитата:

Сообщение от рони
смотрите на строку 12 и сделайте соотвественно


Globus 28.07.2014 01:09

В 12-ой строке вижу только var elem = elems[i],


function savecook() {
var sel = document.getElementsByTagName('select');
var i;
            for (var i=0; i < sel.length; i++) {
                var sel = sels[i],
                    b = getCookie(sel.name);
                sel.selectedIndex = b !== undefined ? c : 0;

	};
      
        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 : 0;
            }

        }
    </script>


.........


<input type="button" name="save" onclick="savecook()" value="save_all">

рони 28.07.2014 01:15

:-/

function savecook() {
    var elems = document.getElementsByTagName('select');
    for (var i = 0; i < elems.length; i++) {
         var elem = elems[i];
        setCookie(elem.name, elem.selectedIndex);
    }
};

Globus 28.07.2014 01:42

+ :thanks:

indeec14 31.08.2017 18:33

Цитата:

Сообщение от рони (Сообщение 319253)
tart,
:write:
<!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>

Круто! А как можно провернуть такую же фишку, только с input, radio и др.? На приведенном примере

И как можно одной кнопкой сбросить все выбранные пункты в форме? Буду признателен


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