Не разобрался с применением 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:46. |