02.07.2014, 07:43
|
|
Новичок на форуме
|
|
Регистрация: 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 выше.
|
|
03.07.2014, 01:08
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,132
|
|
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>
|
|
23.07.2014, 23:45
|
|
Аспирант
|
|
Регистрация: 04.03.2014
Сообщений: 76
|
|
рони, а как можно сделать, чтобы всем селектам, содержание которых берется из куков, но не является первым (selectedIndex), присваивался какой-нибудь новый класс?
|
|
23.07.2014, 23:54
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,132
|
|
Globus,
попробуйте самостоятельно решить этот вопрос в 52 строке if() {} ; кука есть и она не 1 то мастачим класс.
|
|
24.07.2014, 00:48
|
|
Аспирант
|
|
Регистрация: 04.03.2014
Сообщений: 76
|
|
рони,
Спасибо! Я пробую такую конструкцию
if(elem.selectedIndex > 0) { document.getElementsByTagName('select').AddClass('22')} ;
если индекс выбранного option не равен нулю, то присваивается класс 22
но не уверен, что эта конструкция хотя бы отчасти правильна, вас не затруднит указать на ошибку?
|
|
24.07.2014, 01:05
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,132
|
|
Globus,
когда доки читать начнёте
if(c !== undefined && c !== '1') {elem.className = '22'};
|
|
24.07.2014, 01:50
|
|
Аспирант
|
|
Регистрация: 04.03.2014
Сообщений: 76
|
|
работает! спасибо!
|
|
26.07.2014, 21:00
|
|
Аспирант
|
|
Регистрация: 04.03.2014
Сообщений: 76
|
|
Рони, подскажите, пожалуйста, в этого же скрипта можно ли присваивать "22" класс селекту, у которого индекс option перестал быть равным = '1' ?
|
|
27.07.2014, 20:56
|
|
Аспирант
|
|
Регистрация: 04.03.2014
Сообщений: 76
|
|
А главное - Важный вопрос: можно ли, чтобы куки с каждого селекта записывались не при onchange="fn()" , а при нажатии на одну кнопку, например, <input type="button" name="save" value="saveall"> ?
|
|
27.07.2014, 21:00
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,132
|
|
Globus,
можно сделайте циклом обход селектов ... сам сам ... пора уже
|
|
|
|