javascript

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
Dimitris
bit level
bit level
Posts: 38
Joined: Tue May 04, 2004 8:12 pm

javascript

Post by Dimitris » Thu Apr 14, 2005 9:41 pm

Υπάρχει τρόπος να αποθηκεύονται οι αλλαγές που κάνεις σε μια σελίδα (πχ αλλαγή της τιμής ενός κελιού σε έναν πίνακα), έτσι ώστε την επόμενη φορά που θα ξαναμπείς στην σελίδα η τιμή να είναι η καινούργια? Για παράδειγμα έστω ότι έχουμε τον παρακάτω κώδικα ο οποίος αλλάζει την τιμή σε ένα κελί ενός πίνακα.

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>

Θέλω όταν ξαναμπώ στην σελίδα να έχει την καινούργια τιμή.Γίνεται με κάποιον τρόπο???
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Fri Apr 15, 2005 1:03 pm

Θα μπορούσες να αποθηκεύσεις την πληροφορία σε ένα cookie, και αργότερα μέσω αυτού να ανακτάς την πληροφορία.
[Better to understand a little than to misunderstand a lot]
User avatar
HdkiLLeR
Venus Project Founder
Venus Project Founder
Posts: 4356
Joined: Tue Jan 27, 2004 4:41 pm
Academic status: Alumnus/a
Gender:
Location: New York, NY
Contact:

Post by HdkiLLeR » Sun Apr 17, 2005 4:34 am

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

ΥΓ: Μπορεί να γίνεται και με την πατέντα που αναφέρει ο Einherjar παραπάνω αλλά περισσότερα δεν ξέρω.
-----BEGIN GEEK CODE BLOCK-----
Version: 3.12
GCS d-->--- s+:+ a- C++(+++) BILS++++$ P--- L++++>+++++ E--- W+++ N+ o+ K w--
O M+ V-- PS++>+++ PE- Y++ PGP++ t+ 5+ X+ R* tv b++ DI- D+ G+++ e+++>++++ h r++ y++
------END GEEK CODE BLOCK------

"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity." -- Dennis Ritchie
User avatar
Einherjar
Venus Project Founder
Venus Project Founder
Posts: 3751
Joined: Tue Jan 27, 2004 4:42 pm
Academic status: Alumnus/a
Gender:
Location: Washington DC, USA
Contact:

Post by Einherjar » Sun Apr 17, 2005 11:49 am

σκέφτηκα τη δυνατότητα του server side prog, αλλά νομίζω ότι δεν είναι δυνατό να μπορεί να συσχετισει ο server με μοναδικό τρόπο έναν browser/χρήστη με ένα όνομα, χωρίς να υπάρξει κάποιας μορφής authentication. οπότε το cookie είναι η μόνη πρακτική λύση
[Better to understand a little than to misunderstand a lot]
User avatar
Skeftomilos
bit level
bit level
Posts: 43
Joined: Fri Mar 04, 2005 8:08 am
Location: Ν.Κόσμος

Post by Skeftomilos » Sun Apr 17, 2005 7:41 pm

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 και παραθύρων.
The pure and simple truth is rarely pure and never simple. Ο μη νους δε σκέπτεται μη σκέψεις για το τίποτα.
Post Reply

Return to “Προγραμματισμός”