2014-01-23 2 views
0

Как раз туда и обратно Я невероятно новичок в javascript, извиняюсь за любые глупые комментарии или очевидные ошибки заранее.Чтение и использование значений файлов cookie с помощью javascript

Это то, что я в настоящее время работает с:

<div id="currency_select"> 
    <form action="/Default.asp?" method="post" name="CurrencyChoice"> 
     <select onchange="this.form.submit()" name="ER_ID"> 
      <option value="3">EUR</option> 
      <option value="2">GBP</option> 
     </select> 
     <script type="text/javascript"> 
      document.forms['CurrencyChoice'].elements['ER_ID'].value = ''; 
     </script> 
    </form> 
</div> 

Я хочу, чтобы значение из следующего печенья «ER% 5fID» для чтения, а затем вставляется в value='' поле выше.

Чтобы быть полностью честным, я нахожусь в убытке, так как не уверен, что лучший способ - прочитать значение cookie, а затем добавить его значение там, где я хочу.

Еще раз приносит извинения за ошибки, допущенные новичком. Мне нужно научиться javascript на лету, и я должен был начать несколько дней назад.

Так что я потратил немало времени, сегодня пытаюсь выяснить, что мне нужно, который я думаю, это:

function getCookie(c_name) 
{ 
    var i,x,y,ARRcookies=document.cookie.split(";"); 

    for (i=0;i<ARRcookies.length;i++) 
    { 
     x=ARRcookies[i].substr(0,ARRcookies[i].indexOf("=")); 
     y=ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1); 
     x=x.replace(/^\s+|\s+$/g,""); 
     if (x==c_name) 
     { 
      return unescape(y); 
     } 
    } 
} 

Однако я до сих пор уверен в том, чтобы иметь соответствующий результат возвращение в течение поле значений?

Заранее благодарим за любую помощь.

+0

, или если вам не нужен старый IE, просто ER_ID.value = '' ... – dandavis

+1

google "setCookie", а затем, если необходимо, "getCookie" – dandavis

+0

, вы можете захотеть использовать localStorage для этого, если вам это нравится о производительности сайта ... – dandavis

ответ

0

Прошу прощения, я просто не хочу переписывать это, W3Scools tutorial on cookies является довольно сложным и даже дает вам полностью завершенные функции для чтения и письма cookie.

Это также хороший ресурс для общего обучения JS, поэтому вы обязательно должны его проверить.

Код есть следующим образом:

function setCookie(cname,cvalue,exdays) 
{ 
var d = new Date(); 
d.setTime(d.getTime()+(exdays*24*60*60*1000)); 
var expires = "expires="+d.toGMTString(); 
document.cookie = cname + "=" + cvalue + "; " + expires; 
} 

function getCookie(cname) 
{ 
var name = cname + "="; 
var ca = document.cookie.split(';'); 
for(var i=0; i<ca.length; i++) 
    { 
    var c = ca[i].trim(); 
    if (c.indexOf(name)==0) return c.substring(name.length,c.length); 
    } 
return ""; 
} 

А использование является:

function checkCookie() 
{ 
var username=getCookie("username"); 
if (username!="") 
    { 
    alert("Welcome again " + username); 
    } 
else 
    { 
    username = prompt("Please enter your name:",""); 
    if (username!="" && username!=null) 
    { 
    setCookie("username",username,365); 
    } 
    } 
} 

Но вы можете прочитать в W3Scools собственный веб-сайт.

EDIT: Так вот обещанный полностью функциональный образец в вашем конкретном случае:

<html> 
    <head> 
     <meta http-equiv="X-UA-Compatible" content="IE=9" /> 
     <title>Cookie Example</title> 
     <script type="text/javascript"> 

     //adds the [String].trim() method to the [String] object if missing 
     if(!String.prototype.trim) { 
      String.prototype.trim = function() { 
      return this.replace(/^\s+|\s+$/g,''); 
      }; 
     } 

      var cookieName = "ER_ID"; 

      function setCookie(cname,cvalue,exdays) 
      { 
       var d = new Date(); 
       d.setTime(d.getTime()+(exdays*24*60*60*1000)); 
       var expires = "expires="+d.toGMTString(); 
       document.cookie = cname + "=" + cvalue + "; " + expires; 
      } 

      function getCookie(cname) 
      { 
       var name = cname + "="; 
       var ca = document.cookie.split(';'); 
       for(var i=0; i<ca.length; i++){ 
        var c = ca[i].trim(); 
        if (c.indexOf(name)==0) return c.substring(name.length,c.length); 
       } 
       return ""; 
      } 

      function setOptionFromCookie() { 

       var select = document.getElementById('ER_ID'), index, value = getCookie(cookieName); 

       index = select.options.length; 
       while(index--) { 
        if(select.options[index].value == value) { 
         break; 
        } 
       } 

       if(index > -1) { 
        select.selectedIndex = index; 
       } else { 
        alert('no such value in selection'); 
       } 
      } 

      function setValue() { 
       var value = document.getElementById('value').value; 
       setCookie(cookieName, value, 365); 
      } 
     </script> 
    </head> 
    <body> 
     The value that will go into the cookie "ER_ID": <input id="value" value="2" /> 
     <br/> 
     <button onclick="setValue()">Set Cookie</button> 
     <button onclick="setOptionFromCookie()">Set Option from cookie</button> 
     <hr /> 
     <div id="currency_select"> 
      <form action="/Default.asp?" method="post" name="CurrencyChoice"> 
       <select onchange="this.form.submit()" id="ER_ID" name="ER_ID"> 
        <option value="1" selected="selected">Select Currency</option> 
        <option value="3">EUR</option> 
        <option value="2">GBP</option> 
       </select> 
       <script type="text/javascript"> 

       </script> 
      </form> 
     </div> 
    </body> 
</html> 

Потому что у меня нет такой куки в браузере, я также возможность для Вас, чтобы установить куки , Но это должно быть довольно легко понять. Просто сначала настройте файл cookie, а затем нажмите «Установить опцию из файла cookie», чтобы прочитать файл cookie и установить опцию на основе значения.

+0

Я уверен, что не просил вас писать что-либо для меня. Также я провел последние три дня в W3School для различные основанные на JS основы, включая этот. Но спасибо за то, что он указал на очевидное. Извинения, если моя нехватка знаний - это досада ... –

+0

@ Zen Вы неправильно поняли, что для чтения и написания куки ответ, который я даю, тот же, что и в W3Scools (нет смысла переписывать то, что существует, я использую те же самые я), но если вы все еще не получите, как их использовать, я заново запомню свой ответ за ваш конкретный случай. – Idra

+0

@ZenAz как продвинутый здесь полностью функционирующий образец, использующий ваш HTML (в основном), используя те же функции, что и в W3Schools, и в следующий раз, когда вы спросите что-нибудь, что вы знаете! – Idra

Смежные вопросы