2016-03-28 22 views
1

Bir girdiye değerini yazmak isteyen bir çerez yapıyorum. Kurabiye yapmayı başarabilirim ancak ikinci adımı gerçekleştiremiyorum. Sorun ne? Lütfen, gelecekte nasıl davranacağımı bilmeme izin verin! Teşekkürler.Çerezlerim neden girdiye (javascript) bir değer yazmıyor?

\t var init = function() { 
 
\t var time = new Date(); 
 
\t time.setMonth(time.getMonth() +1); 
 
\t var cookieVal = document.getElementById("first").value; 
 
\t document.cookie = "first" + "=" + cookieVal + ";path=/;expires=" + time.toGMTString(); 
 
\t valArray = document.cookie.split(";"); 
 
\t return valArray[1]; 
 
} 
 
\t document.getElementById("done").onclick = init; 
 
\t document.getElementById('first').value = init();
<form> 
 
    <input type="text" id="first" placeholder="Введите имя"> 
 
    <input type="button" id="done" value="Готово!"> 
 
    </form>

+0

neyi çerezinde başlangıç ​​değeri olmalıdır? İlk durumda değeri olmayan "ilk" metin kutusunun değerine erişiyorsunuz. – koolhuman

cevap

0

Kodunuz gidiyor ve done düğmesi ve sayfa yüklenmeden önce first metin kutusu gidiyor (yazıldığı gibi) gibi görünüyor.

uygun olay işleme kullanmak üzere kodunu yeniden organize ederek, bu kod çalışır: Elbette

var txtFirst = null, btnDone = null; 
 

 
window.addEventListener("DOMContentLoaded", function(){ 
 

 
    txtFirst = document.getElementById("first"); 
 
    btnDone = document.getElementById("done"); 
 
    
 
    btnDone.addEventListener("click", init); 
 

 
}); 
 

 

 
function init() { 
 

 
\t var time = new Date();  
 
\t time.setMonth(time.getMonth() +1); 
 
\t var cookieVal = txtFirst.value; 
 
    
 
\t document.cookie = "first=" + cookieVal + ";path=/;expires=" + time.toGMTString(); 
 
    
 
\t valArray = document.cookie.split(";"); 
 
\t txtFirst.value = valArray[1]; 
 
}
<form> 
 
    <input type="text" id="first" placeholder="Введите имя"> 
 
    <input type="button" id="done" value="Готово!"> 
 
</form>

, kullanıcı, onların koymak istiyorum aynı kutuya kendi adını yazın sahip çalışmazsa gibi görünse içine isim, bu yüzden böyle bir şey istiyorum düşünüyorum:

var txtFirst = null, btnDone = null; 
 

 
window.addEventListener("DOMContentLoaded", function(){ 
 

 
    txtFirst = document.getElementById("first"); 
 
    btnDone = document.getElementById("done"); 
 
    
 
    btnDone.addEventListener("click", setCookie); 
 
    
 
    if(document.cookie){ 
 
     getCookie(); 
 
    } 
 

 
}); 
 

 

 
function setCookie() { 
 

 
\t var time = new Date();  
 
\t time.setMonth(time.getMonth() +1); 
 
\t var cookieVal = txtFirst.value; 
 
\t document.cookie = "first=" + cookieVal + ";path=/;expires=" + time.toGMTString(); 
 
} 
 

 
function getCookie() { 
 
\t txtFirst.value = document.cookie.split(";")[1]; 
 
}
<form> 
 
    <input type="text" id="first" placeholder="Введите имя"> 
 
    <input type="button" id="done" value="Готово!"> 
 
</form>

0

Eh, kodunuzda birkaç hatalara bakın: Eğer init() diyoruz sayfasını başlattığınızda

  1. , giriş boşsa ancak önceki silerek, bu çerez içine boşluk var biriktiriyoruz Eğer valArray[1] kullanıyorsanız neden ilk değerini almak için çalışıyorsanız değeri
  2. Ben emin değilim olmalıdır: valArray[0]

iki sep atmanızı tavsiye arate fonksiyonlar, bu değeri alacak şekilde çerez ve diğeri ayarlama için olmak üzere

var setvalue = function() { 
 
    var time = new Date(); 
 
    time.setMonth(time.getMonth() +1); 
 
    var cookieVal = document.getElementById("first").value; 
 
    document.cookie = "first" + "=" + cookieVal + ";path=/;expires=" + time.toGMTString(); 
 
} 
 
var getvalue = function() { 
 
    valArray = document.cookie.split(";"); 
 
    return valArray[0]; 
 
} 
 

 
document.addEventListener("DOMContentLoaded", function() { 
 
    document.getElementById("done").onclick = setvalue; 
 
    document.getElementById('first').value = getvalue(); 
 
})
<form> 
 
    <input type="text" id="first" placeholder="Введите имя"> 
 
    <input type="button" id="done" value="Готово!"> 
 
    </form>

İlgili konular