Page 1 of 1

javascript

Posted: Thu Apr 14, 2005 9:41 pm
by Dimitris
Υπάρχει τρόπος να αποθηκεύονται οι αλλαγές που κάνεις σε μια σελίδα (πχ αλλαγή της τιμής ενός κελιού σε έναν πίνακα), έτσι ώστε την επόμενη φορά που θα ξαναμπείς στην σελίδα η τιμή να είναι η καινούργια? Για παράδειγμα έστω ότι έχουμε τον παρακάτω κώδικα ο οποίος αλλάζει την τιμή σε ένα κελί ενός πίνακα.

Code: Select all

<html>
<head>
<script type="text/javascript">
function changeContent()
{
var x=document.getElementById('myTable').rows
var y=x[0].cells
var name=prompt("Enter Your Name:","Name");
y[0].innerHTML=name
}
</script>
</head>

<body>
<table id="myTable" border="1">
<tr>
<td>Row1 cell1</td>
<td>Row1 cell2</td>
</tr>
<tr>
<td>Row2 cell1</td>
<td>Row2 cell2</td>
</tr>
<tr>
<td>Row3 cell1</td>
<td>Row3 cell2</td>
</tr>
</table>
<form>
<input type="button" onclick="changeContent()" value="Change content">
</form>
</body>

</html>

Θέλω όταν ξαναμπώ στην σελίδα να έχει την καινούργια τιμή.Γίνεται με κάποιον τρόπο???

Posted: Fri Apr 15, 2005 1:03 pm
by Einherjar
Θα μπορούσες να αποθηκεύσεις την πληροφορία σε ένα cookie, και αργότερα μέσω αυτού να ανακτάς την πληροφορία.

Posted: Sun Apr 17, 2005 4:34 am
by HdkiLLeR
Η js είναι client - side γλώσσα. Ότι κάνεις μεταφορτώνεται στον χρήστη και εκτελείται στον browser του χρήστη καταυθείαν, χωρίς να σχετίζεται και να γνωρίζει κάτι για τον server απο τον οποίο έγεινε η μεταφόρτωση. Εάν απλό αρχείο είναι το οποίο τρέχει στον client. Εάν θέλεις οι αλλαγές να γίνουν στον server τότε θα πρέπει να αλληλεπιδράσει η σελίδα σου με τον server πράγμα που σημείνει server-side γλώσσα(php,jsp,asp, CGI, perl κλπ κλπ).

ΥΓ: Μπορεί να γίνεται και με την πατέντα που αναφέρει ο Einherjar παραπάνω αλλά περισσότερα δεν ξέρω.

Posted: Sun Apr 17, 2005 11:49 am
by Einherjar
σκέφτηκα τη δυνατότητα του server side prog, αλλά νομίζω ότι δεν είναι δυνατό να μπορεί να συσχετισει ο server με μοναδικό τρόπο έναν browser/χρήστη με ένα όνομα, χωρίς να υπάρξει κάποιας μορφής authentication. οπότε το cookie είναι η μόνη πρακτική λύση

Posted: Sun Apr 17, 2005 7:41 pm
by Skeftomilos

Code: Select all

<html>
  <head>
    <script type="text/javascript">
      function increment() {
        with(document.getElementById("counter")) { 
          innerHTML++
          expire_date = new Date(new Date().getTime() + 365 * 24 * 60 * 60 * 1000)
          document.cookie = "counter=" + escape(innerHTML) + "; expires=" + expire_date.toGMTString()
        }
      }
      window.onload = function() {
        if (/counter=([^;]*)/.test(document.cookie)) {
          document.getElementById("counter").innerHTML = RegExp.$1
        }
      }
    </script>
  </head>
  <body>
    Μετρητής: <span id="counter">0</span><br>
    <button onClick="increment()">Αύξηση</button>
  </body>
</html>
Κάθε φορά που ο χρήστης κάνει κλικ το κουμπί, γράφεται ένα cookie με διάρκεια ενός έτους. Αν μέσα σε αυτό το χρονικό διάστημα ο χρήστης ξαναδεί τη σελίδα, τρέχει το συμβάν onload που διαβάζει το cookie (με Regular Expression) και τοποθετεί την αποθηκευμένη τιμή στο element "counter".

Να σημειωθεί ότι οι browsers έχουν ξεχωριστή διαχείρηση cookies. Ο Firefox δεν ξέρει τίποτα για τα cookies που γράφει ο IE και αντίστροφα.

Αν δεν ορίσουμε ημερομηνία λήξης του cookie, θα λήξει μόλις τερματιστεί το πρόγραμμα του browser. Όχι με το κλείσιμο του συγκεκριμένου παραθύρου, αλλά όλων των ανοιχτών tabs και παραθύρων.