Πρόβλημα με external javascript αρχείο

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
bios21
Δημοσιεύσεις: 89
Εγγραφή: 22 Μάιος 2006 19:35

Πρόβλημα με external javascript αρχείο

Δημοσίευση από bios21 » 03 Νοέμ 2009 19:59

Μου έχει συμβεί το εξής παράδοξο:
βρήκα ένα scriptaki το οποίο τραβάει την ώρα από το server και τη προβάλει. Το βρήκα όλο σαν ενιαίο αρχείο php.
Για λόγους πρακτικότητας εγώ θέλω να βγάλω τον κώδικα σε ένα external αρχείο και να το καλώ μέσα στην html.
παρόλαυτα δε ξέρω τι κάνω λάθος και δε μου δουλεύει. Μου προβάλει:
Τοπική ώρα:
undefined NaN, NaN NaN:NaN:NaN


Προφανώς δε βρίσκει τη συνάρτηση

Το αρχικό αρχείο είναι αυτό:

Κώδικας: Επιλογή όλων

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-7" />
<title>Untitled Document</title>
<style type="text/css">
<!--
body,td,th &#123;
	font-family&#58; Verdana, Arial, Helvetica, sans-serif;
&#125;
-->
</style></head>

<body>
<script type="text/javascript">

var currenttime = '<? print date&#40;"F d, Y H&#58;i&#58;s", time&#40;&#41;&#41;?>' //PHP method of getting server date

var montharray=new Array&#40;"Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"&#41;
var serverdate=new Date&#40;currenttime&#41;

function padlength&#40;what&#41;&#123;
var output=&#40;what.toString&#40;&#41;.length==1&#41;? "0"+what &#58; what
return output
&#125;

function displaytime&#40;&#41;&#123;
serverdate.setSeconds&#40;serverdate.getSeconds&#40;&#41;+1&#41;
var datestring=montharray&#91;serverdate.getMonth&#40;&#41;&#93;+" "+padlength&#40;serverdate.getDate&#40;&#41;&#41;+", "+serverdate.getFullYear&#40;&#41;
var timestring=padlength&#40;serverdate.getHours&#40;&#41;&#41;+"&#58;"+padlength&#40;serverdate.getMinutes&#40;&#41;&#41;+"&#58;"+padlength&#40;serverdate.getSeconds&#40;&#41;&#41;
document.getElementById&#40;"servertime"&#41;.innerHTML=datestring+" "+timestring
&#125;

window.onload=function&#40;&#41;&#123;
setInterval&#40;"displaytime&#40;&#41;", 1000&#41;
&#125;

</script>
<div id="clock">Τοπική ώρα&#58; </div><span id="servertime"></span>
</body>
</html>

Αυτό που κάνω είναι να παίρνω το κομμάτι αυτό που περικλείεται μέσα στα <script> και να το κλανω copy paste σε ένα .js αρχείο:

Κώδικας: Επιλογή όλων

var currenttime = '<? print date&#40;"F d, Y H&#58;i&#58;s", time&#40;&#41;&#41;?>' //PHP method of getting server date

var montharray=new Array&#40;"Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"&#41;
var serverdate=new Date&#40;currenttime&#41;

function padlength&#40;what&#41;&#123;
var output=&#40;what.toString&#40;&#41;.length==1&#41;? "0"+what &#58; what
return output
&#125;

function displaytime&#40;&#41;&#123;
serverdate.setSeconds&#40;serverdate.getSeconds&#40;&#41;+1&#41;
var datestring=montharray&#91;serverdate.getMonth&#40;&#41;&#93;+" "+padlength&#40;serverdate.getDate&#40;&#41;&#41;+", "+serverdate.getFullYear&#40;&#41;
var timestring=padlength&#40;serverdate.getHours&#40;&#41;&#41;+"&#58;"+padlength&#40;serverdate.getMinutes&#40;&#41;&#41;+"&#58;"+padlength&#40;serverdate.getSeconds&#40;&#41;&#41;
document.getElementById&#40;"servertime"&#41;.innerHTML=datestring+" "+timestring
&#125;

window.onload=function&#40;&#41;&#123;
setInterval&#40;"displaytime&#40;&#41;", 1000&#41;
&#125;
και προσθέτω στο head το

Κώδικας: Επιλογή όλων

<script type="text/javascript" src="clock.js"></script>

Τι κάνω λάθος;

Ευχαριστώ !!

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με external javascript αρχείο

Δημοσίευση από korgr » 03 Νοέμ 2009 20:18

Κώδικας: Επιλογή όλων

<? print date&#40;"F d, Y H&#58;i&#58;s", time&#40;&#41;&#41;?>
Αυτο για να εκτελεσθει πρεπει να ειναι μεσα σε αρχειο php

bios21
Δημοσιεύσεις: 89
Εγγραφή: 22 Μάιος 2006 19:35

Πρόβλημα με external javascript αρχείο

Δημοσίευση από bios21 » 03 Νοέμ 2009 20:57

Προσθέτω τη γραμμή αυτή από το .js στο βασικό μου αρχείο και εμφανίζει αυτό:

var currenttime = 'November 03, 2009 20:51:46' //PHP method of getting server date
Τοπική ώρα:
undefined NaN, NaN NaN:NaN:NaN

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με external javascript αρχείο

Δημοσίευση από korgr » 03 Νοέμ 2009 21:31

Το βασικο σου αρχειο ειναι php?
Το τρεχεις σε καποιο server (ακομα και local) o οποιος να εχει υποστηριξη php?

bios21
Δημοσιεύσεις: 89
Εγγραφή: 22 Μάιος 2006 19:35

Πρόβλημα με external javascript αρχείο

Δημοσίευση από bios21 » 03 Νοέμ 2009 21:32

το βασικό είναι php και το σηκώνω σε server που υποστηρίζει php

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με external javascript αρχείο

Δημοσίευση από korgr » 03 Νοέμ 2009 22:29

Το συγκεκριμενο script δημιουργει js δεδομενα (την ωρα του server) on the fly μεσω php.
Νομιζω πως πρεπει να κρατησεις την js οπως στην αρχη σε ενα αρχειο...

Δεν ξερω αν θα δουλευε το να εκανες το js αρχειο σου rename σε clock.php και να το καλουσες με

Κώδικας: Επιλογή όλων

<script type="text/javascript" src="clock.php"></script>
Δεν το εχω δοκιμασει με js
Με css η λυση αυτη δουλευει κανονικα!

bios21
Δημοσιεύσεις: 89
Εγγραφή: 22 Μάιος 2006 19:35

Πρόβλημα με external javascript αρχείο

Δημοσίευση από bios21 » 03 Νοέμ 2009 23:23

Το δοκίμασα έτσι και δυστυχώς δεν έπιασε.
Μήπως δε γίνεται να δημιουργηθεί κάποιο script χωρίς να δημιουργεί in the fly τα δεδομένα και κατ'επέκταση να μη μπορείς να ξεχωρίσεις τα τμήματα του κώδικα;

Μήπως έχεις στα υπόψη σου κάποιο script που να κάνει αυτό το πράγμα;
Απλά να προβάλει σε αριθμούς χωρίς εφέ την ώρα του server καλώντας ένα εξωτερικό αρχείο ώστε να μη γίνεται αυτός ο πανικός από κώδικα σε κάθε σελίδα που θες να το εμφανίσεις;

και πάλι ευχαριστώ....

Άβαταρ μέλους
korgr
Honorary Member
Δημοσιεύσεις: 5067
Εγγραφή: 07 Οκτ 2008 18:30
Τοποθεσία: Corinth
Επικοινωνία:

Πρόβλημα με external javascript αρχείο

Δημοσίευση από korgr » 04 Νοέμ 2009 00:33

bios21 έγραψε:Το δοκίμασα έτσι και δυστυχώς δεν έπιασε.
Αμ δε!
Επιασε και παραεπιασε :P
Η δοκιμη μου εχει γινει σε UTF-8
To html

Κώδικας: Επιλογή όλων

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http&#58;//www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http&#58;//www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Server Time</title>
<script type="text/javascript" src="clock.php"></script>
</head>
<body>
<div id="servertime"></div>
</body>
</html>
To clock.php (στην ουσια ειναι το js αρχειο)

Κώδικας: Επιλογή όλων

var currenttime = '<?=date&#40;"F d, Y H&#58;i&#58;s", time&#40;&#41;&#41;;?>'
var montharray=new Array&#40;"Ιανουάριος","Φεβρουάριος","Μάρτιος","Απρίλιος","Μάιος","Ιούνιος","Ιούλιος","Αύγουστος","Σεπτέμβριος","Οκτώβριος","Νοέμβριος","Δεκέμβριος"&#41;
var serverdate=new Date&#40;currenttime&#41;

function padlength&#40;what&#41;&#123;
var output=&#40;what.toString&#40;&#41;.length==1&#41;? "0"+what &#58; what
return output
&#125;

function displaytime&#40;&#41;&#123;
serverdate.setSeconds&#40;serverdate.getSeconds&#40;&#41;+1&#41;
var datestring=montharray&#91;serverdate.getMonth&#40;&#41;&#93;+" "+padlength&#40;serverdate.getDate&#40;&#41;&#41;+", "+serverdate.getFullYear&#40;&#41;
var timestring=padlength&#40;serverdate.getHours&#40;&#41;&#41;+"&#58;"+padlength&#40;serverdate.getMinutes&#40;&#41;&#41;+"&#58;"+padlength&#40;serverdate.getSeconds&#40;&#41;&#41;
document.getElementById&#40;"servertime"&#41;.innerHTML=datestring+" "+timestring
&#125;

window.onload=function&#40;&#41;&#123;
setInterval&#40;"displaytime&#40;&#41;", 1000&#41;
&#125;
Ολα τα ανωτερω στην πραξη

bios21
Δημοσιεύσεις: 89
Εγγραφή: 22 Μάιος 2006 19:35

Πρόβλημα με external javascript αρχείο

Δημοσίευση από bios21 » 04 Νοέμ 2009 01:53

Πραγματικά σε ευχαριστώ πολύ!
Με έσωσες !!

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες