2012-06-09 10 views
9

मैं इस कई बार पोस्ट देखा है, लेकिन मैं सब पर काम कर कोड प्राप्त करने में सक्षम नहीं था। मैं इस ड्रॉप डाउन मेनू एक कुकी के लिए अपनी सेटिंग्स को सहेजने बनाने में मदद की जरूरत है, इसलिए जब उपयोगकर्ता फिर से साइट का दौरा, अपने पिछले चयन को बनाए रखा है।एक कुकी में ड्रॉपडाउन मेनू चयन सहेजा जा रहा है?

ड्रापडाउन:

<select id="ThemeSelect"> 
    <option value="zelda">Zelda</option> 
    <option value="smb2">SMB 2</option> 
</select> 

संदर्भ के लिए, इस कोड को एक Wordpress विजेट कि सीएसएस कोड बदल जाता है, एक विषय चयनकर्ता की तरह में कुछ जावास्क्रिप्ट के साथ है।

मैं इस एक कुकी के रूप में सहेजने होगा? मुझे लगता है कि मैंने सब कुछ करने की कोशिश की है!

संपादित करें: मैंने कहा जाना चाहिए था, लेकिन मैं इस कोड का उपयोग सीएसएस बदलने के लिए:

इन पंक्तियों के साथ
var saveclass = null; 
var sel = document.getElementById('ThemeSelect'); 
sel.onchange = function(){ 
    saveclass = saveclass ? saveclass : document.body.className; 
    document.body.className = saveclass + ' ' + sel.value; 
}; 

उत्तर

10

कुछ आप के लिए काम करना चाहिए। जावास्क्रिप्ट के माध्यम से एक कुकी बनाना समारोह, javascripter.net पर एक पोस्ट Setting a Cookie from JavaScript में मिला था।

एचटीएमएल:

<select id="ThemeSelect" onchange="setCookie('theme', this.value, 365);"> 
    <option value="zelda">Zelda</option> 
    <option value="smb2">SMB 2</option> 
</select> 

जावास्क्रिप्ट:

function setCookie(cookieName, cookieValue, nDays) { 
    var today = new Date(); 
    var expire = new Date(); 

    if (!nDays) 
     nDays=1; 

    expire.setTime(today.getTime() + 3600000*24*nDays); 
    document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString(); 
} 

संपादित:

सहेजें कुकी

मैं तुम्हारे लिए एक में दो कार्यों विलय कर दिया है।

एचटीएमएल:

<select id="ThemeSelect" onchange="saveTheme(this.value);"> 
    <option value="zelda">Zelda</option> 
    <option value="smb2">SMB 2</option> 
</select> 

जावास्क्रिप्ट:

var saveclass = null; 

function saveTheme(cookieValue) 
{ 
    var sel = document.getElementById('ThemeSelect'); 

    saveclass = saveclass ? saveclass : document.body.className; 
    document.body.className = saveclass + ' ' + sel.value; 

    setCookie('theme', cookieValue, 365); 
} 

function setCookie(cookieName, cookieValue, nDays) { 
    var today = new Date(); 
    var expire = new Date(); 

    if (nDays==null || nDays==0) 
     nDays=1; 

    expire.setTime(today.getTime() + 3600000*24*nDays); 
    document.cookie = cookieName+"="+escape(cookieValue) + ";expires="+expire.toGMTString(); 
} 

Live DEMO

पेज

में लौटने पर कुकी पढ़ें

dunsmoreb

के लिए धन्यवाद हम इस फ़ंक्शन का उपयोग कर कुकी प्राप्त कर सकते हैं, shamelessly stolen from this question

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i = 0; i < ca.length; i++) { 
    var c = ca[i]; 
    while (c.charAt(0) == ' ') c = c.substring(1, c.length); 
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 
    } 
    return null; 
} 

तो हम मान का चयन करने के लिए पृष्ठ लोड होने की जरूरत है। निम्नलिखित कोड सिर्फ इतना है कि पूरा होगा:

document.addEventListener('DOMContentLoaded', function() { 
    var themeSelect = document.getElementById('ThemeSelect'); 
    var selectedTheme = readCookie('theme'); 

    themeSelect.value = selectedTheme; 
    saveclass = saveclass ? saveclass : document.body.className; 
    document.body.className = saveclass + ' ' + selectedTheme; 
}); 

Live DEMO

+1

क्या मैं बदल सकता हूं: 'अगर (nDays == null || ndays == 0) 'to' if (! NDays) '? इस तरह यह शून्य, शून्य, और अपरिभाषित के खिलाफ जांचता है। –

+1

सुझाव के लिए धन्यवाद। मैंने कोड अपडेट किया। –

+0

मेरे लिए, यह पूरी तरह से सही दिखता है, हालांकि, जब मैं इसे एक परीक्षण पृष्ठ पर डालता हूं, मुझे नहीं पता कि यह क्यों काम नहीं करता है। http://dcvidya.com/testing/ वैसे, पृष्ठ है। क्या मैं गलत हूं? – DANCUBE

-1

आप PHP में सत्र चर बनाने पर गौर करना चाहिए।

http://www.w3schools.com/php/php_sessions.asp

आप एक सत्र के लिए चर बचा सकते हैं और जब आप पृष्ठ लोड, आप चर आप सेट के मूल्य की जाँच करें, के आधार पर यह मूल्य है, लटकती एक निश्चित तरीके से व्यवहार कर सकता है। हो सकता है कि ड्रॉपडाउन आइटम का नाम सत्र चर के रूप में संग्रहीत करें?

+0

वह जानना चाहता है कि वह जावास्क्रिप्ट के माध्यम से कुकी कैसे सेट कर सकता है। –

+2

यदि वह इसे सत्र में संग्रहीत करता है, तो वह साइट पर छोड़कर बाद में वापस आने पर पहुंच योग्य नहीं होगा। –

+0

आह यह सही है, क्षमा करें। यद्यपि यदि कोई इसे PHP में करने में रूचि रखता है, तो कुकी का उपयोग करना बेहतर हो सकता है ... http://www.w3schools.com/php/php_cookies.asp –

3

नोट: यह उत्तर Josh Mein's answer पर जोड़ता है। इसे मर्ज करने के लिए स्वतंत्र महसूस करें।

हम कुकी इस समारोह का उपयोग कर प्राप्त कर सकते हैं, shamelessly stolen from this question.

function readCookie(name) { 
    var nameEQ = name + "="; 
    var ca = document.cookie.split(';'); 
    for(var i = 0; i < ca.length; i++) { 
    var c = ca[i]; 
    while (c.charAt(0) == ' ') c = c.substring(1, c.length); 
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); 
    } 
    return null; 
} 

तो हम मान का चयन करने के लिए पृष्ठ लोड होने की जरूरत है। निम्नलिखित कोड बस इसे पूरा करेगा।

document.addEventListener('DOMContentLoaded', function() { 
    var themeSelect = document.getElementById('ThemeSelect'); 
    var selectedTheme = readCookie('theme'); 

    if (selectedTheme) { 
    themeSelect.value = selectedTheme; 
    } 
}); 
+1

यहां एक डेमो है: [http://jsbin.com/uwuwuw](http://jsbin.com/uwuwuw)। –

+0

यह मेरे लिए पूरी तरह से विचित्र है, यहां तक ​​कि यह काम नहीं करता है।मैंने मूल प्रश्न में आवश्यक कोड जोड़ा है, लेकिन जब भी मैं इस पृष्ठ को उदाहरण पृष्ठ से हटाता हूं, तब भी विकल्प सहेजा नहीं जाता है। – DANCUBE

+1

क्या आपने HTML बदल दिया था? यह [इस डेमो] में काम करता है (http://jsbin.com/uwuwuw)। –