Не разобрался с применением 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 выше. |
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> |
рони, а как можно сделать, чтобы всем селектам, содержание которых берется из куков, но не является первым (selectedIndex), присваивался какой-нибудь новый класс?
|
Globus,
попробуйте самостоятельно решить этот вопрос в 52 строке if() {} ; кука есть и она не 1 то мастачим класс. |
рони,
Спасибо! Я пробую такую конструкцию if(elem.selectedIndex > 0) { document.getElementsByTagName('select').AddClass('22')} ; если индекс выбранного option не равен нулю, то присваивается класс 22 но не уверен, что эта конструкция хотя бы отчасти правильна, вас не затруднит указать на ошибку? |
Globus,
:cray: когда доки читать начнёте if(c !== undefined && c !== '1') {elem.className = '22'}; |
работает! спасибо!
|
Рони, подскажите, пожалуйста, в этого же скрипта можно ли присваивать "22" класс селекту, у которого индекс option перестал быть равным = '1' ?
|
А главное - Важный вопрос: можно ли, чтобы куки с каждого селекта записывались не при onchange="fn()" , а при нажатии на одну кнопку, например, <input type="button" name="save" value="saveall"> ?
|
Globus,
можно сделайте циклом обход селектов ... сам сам ... пора уже |
Часовой пояс GMT +3, время: 10:58. |