Javascript interpolation

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

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

Απάντηση
Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Javascript interpolation

Δημοσίευση από Christianago » 03 Απρ 2011 12:06

Δε νομιζω να υπαρχει παρομοιο θεμα σε αλλα εγχωρια forums οποτε θα πρωτοτυπησουμε.
Εχω ενα xml αρχειο και τραβαω τα δεδομενα του μεσω μιας σελιδας html χρησιμοποιωντας ajax για να κανω το async request
και javascript για να κανω ολα τα υπολοιπα.
Σε πολλα σημεια του κωδικα πρεπει να αναθεσω μια μεταβλητη που σχηματιζεται σε βρογχο javascript σε html κωδικα.
Δηλαδη ας πουμε εχω μια λουπα που δημιουργει εναν πινακα και αναθετει σε καθε κελι του
πινακα μια μεταβλητη array που αντιστοιχει στον κομβο xml που επεξεργαζομαι.
Ο κομβος αυτος, ας πουμε ειναι το πρωτο παιδι καθε στοιχειου-element και περιεχει ενα link.
Αυτο το link μπορω να το αναθεσω σε μια μεταβλητη array javascript.
Αυτο που δεν ξερω ειναι να περασω αυτη τη μεταβλητη στο tag <a href>

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

myvar&#91;i&#93; = xx&#91;0&#93;.firstChild.nodeValue;
<td><a href='javascript&#58;myvar&#91;i&#93;'></a>
Εν τω μεταξυ ο κωδικας δουλευει αν:

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

<td><a href='javascript&#58;myvar&#91;2&#93;'></a>
αλλα μου ειναι εντελως αχρηστο αφου 'χανω' τα υπολοιπα στοιχεια του πινακα.

Σε ξενα φορουμς λενε οτι το κανουν με διαφορους (οχι συγκεκριμενους) χαρακτηρες διαφυγης, αλλα δε φαινεται να δουλευει σε μενα...Τι να κανω;

Akina
Δημοσιεύσεις: 89
Εγγραφή: 25 Νοέμ 2009 18:31

Javascript interpolation

Δημοσίευση από Akina » 03 Απρ 2011 12:53

Δεν είμαι σίγουρη αν έχω καταλάβει σωστά αλλα δεν λίγο την each και το παράδειγμα που έχει

http://api.jquery.com/jQuery.each/

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Javascript interpolation

Δημοσίευση από Christianago » 03 Απρ 2011 13:36

Το διαβασα αλλα δεν εχει κατι για το δικο μου προβλημα.
Αυτο που θελω ειναι να προσπελασω τα στοιχεια του πινακα μεσα απο το tag της html.
Σε καθαρα javascript κωδικα ειναι πολυ ευκολο να γινει.
Δηλαδη να εχω στην html συμφωνα με τον κωδικα που εγραψα πιο πανω.

1 Link: www.onesite.html απο

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

myvar&#91;0&#93;
2 Link: www.anothersite.html απο

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

 myvar&#91;1&#93;
3 Link: www.somesite.html απο

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

myvar&#91;2&#93;

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

Javascript interpolation

Δημοσίευση από korgr » 03 Απρ 2011 17:44

Δώσε όλο τον κώδικα γιατί ή κάτι κάνεις πολύ λάθος (ατη λογική) ή δεν καταφέρνεις να μας το μεταφέρεις σωστά.
Η λούπα γίνεται σε ένα συγκεκριμένο αριθμό περιεχομένων του πίνακα. Αυτό γίνεται σε script στο head section της html?
Αν ναι, αποθήκευσε αυτή την τιμή σε global var ώστε να επαναλάβεις την ίδια λούπα όπου την χρειαστείς με τον ίδιο αριθμό περιεχομένων.

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Javascript interpolation

Δημοσίευση από Christianago » 03 Απρ 2011 18:35

Ναι η λουπα γινεται στο head της html. Ειναι αρκετα μεγαλος ο κωδικας για να τον ποσταρω
και ολα τα σημεια συνδεονται μεταξυ τους.
Την κυρια ιδεα αυτου που θελω να κανω την ψιλοκαταλαβες. Αυτο λεγεται επισημα Javascript interpolation.
Το γενικευμενο προβλημα ειναι το εξης: Εχεις ας πουμε στο html σου:

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

<div id='x'> </div>
<div id='y'> </div>

οπου x και y ειναι δυο τιμες απο τα στοιχεια ενος πινακα που εχει 'γεμισει' στο head της html.

Στο script λοιπον εχουμε εστω:

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

an_array&#91;i&#93; = &#123;'1', '2', '3' &#125;;
for &#40;i=0; i<; i<an_array.length; i++&#41;&#123;
document.write&#40; "<div id='an_array&#91;i&#93;'></div>"&#41;;
&#125;
το οποιο φυσικα δεν εκτελειται γιατι η μεταβλητη an_array διαβαζεται ως string.
Θελω να διαβαστει κυριολεκτικα αυτη η μεταβλητη.

Προς στιγμην ελυσα το προβλημα μου με το να αναθετω σε μια διαφορετικη μεταβλητη (οχι πινακα αυτη τη φορα) καθε στοιχειο του πινακα.
Το οποιο δεν ειναι καθολου αντικειμενοστραφες.
Και δεν βοηθαει καθολου αν εχω να χειριστω 100+ στοιχεια πινακα.
Οταν λες global var τι εννοεις;

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

Javascript interpolation

Δημοσίευση από korgr » 03 Απρ 2011 21:32

Αν την html την δημιουργεί το script στο <head> δεν έχεις πρόβλημα και δεν χρειάζεσαι καν global var.

Μορεί να γίνει έτσι:

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

an_array&#91;i&#93; = &#123;'1', '2', '3' &#125;;
for &#40;i=0; i<; i<an_array.length; i++&#41;&#123;
document.write&#40; "<div id='"+an_array&#91;i&#93;+"'></div>"&#41;;
&#125;

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Javascript interpolation

Δημοσίευση από Christianago » 03 Απρ 2011 23:11

Το ειχα δοκιμασει και πρωτυτερα αλλα δε μου δουλεψε.
Για την ακριβεια κανω αυτο:

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

<a href='"+an_array&#91;i&#93;+"'><img src="image.gif"></a>
και αντι να μου εμφανισει το λινκ, μου εμφανιζει : undefined
Πρεπει να βρω αλλους χαρακτηρες διαφυγης

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Javascript interpolation

Δημοσίευση από fafos » 03 Απρ 2011 23:31

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

var an_array = &#91;'1', '2', '3'&#93;;
for &#40;i=0;  i < an_array.length; i++&#41;&#123;
document.write&#40; "<div id='"+an_array&#91;i&#93;+"'></div>"&#41;;
&#125;
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Javascript interpolation

Δημοσίευση από Christianago » 03 Απρ 2011 23:34

fafos έγραψε:

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

var an_array = &#91;'1', '2', '3'&#93;;
for &#40;i=0;  i < an_array.length; i++&#41;&#123;
document.write&#40; "<div id='"+an_array&#91;i&#93;+"'></div>"&#41;;
&#125;
Ειναι ολοιδιος ο κωδικας σου με του korgr.
Δε λεω μπορει να δουλευει στη συγκεκριμενη περιπτωση.
Μπορει καποιος να 'θεραπευσει' τον κωδικα με το <a href>?

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6236
Εγγραφή: 30 Νοέμ 2004 03:09

Javascript interpolation

Δημοσίευση από fafos » 03 Απρ 2011 23:36

pou einai oloidios? trexe ton prota kai an den douleuei pame parakato...
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Javascript interpolation

Δημοσίευση από Christianago » 04 Απρ 2011 00:14

Με μια πρωτη ματια μου φανηκε ιδιος.
Οκ, τα δοκιμασα και τα δυο και κανενα δεν δουλεψε.
Δηλαδη δεν εκτελεστηκε καθολου ο κωδικας (συναρτηση), οχι μονο το συγκεκριμενο σημειο.
Για την ακριβεια δουλευω στο Nopepad++, μου εμφανισε οταν εγραψα το:

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

'"+an_array&#91;i&#93;+"'
ως ξενο, οτι και καλα δεν αναγνωριζει κατι τετοιο ως javascript στοιχειο.
Γενικα οταν γραφω κωδικα οτι γλωσσα και να ειναι,
το Nopepad++ εμφανιζει τα 'ακυρα' στοιχεια με μαυρη γραμματοσειρα παρα με γκρι που σημαινει οτι εχω γραψει ειναι σωστο.

Εν μερει το ελυσα το προβλημα με το αναθετω σε καθε λουπα σε μια μεταβλητη καθε στοιχειο του πινακα.

Δηλαδη οταν i=1, τοτε avar = an_array ... κοκ.

Στην ουσια μια γραμμη παραπανω γραφω στον κωδικα.
Προς στιγμην ξερω οτι εκτελουνται ακριβως 20 λουπες στον κωδικα, οποτε δεν ειναι κατι τρομερο.
Η avar δεν εχει μεσα μετρητη οποτε τρεχει κανονικα στο προγραμμα.
Αλλα ετσι για το γαμωτο ηθελα να δω πως μπορω μια μεταβλητη πινακα να την 'ξεφυγω΄κυριολεκτικα.
Αναμενω τη βοηθεια σας παιδια. Αλλιως συνεχιζω το ψαξιμο.

Akina
Δημοσιεύσεις: 89
Εγγραφή: 25 Νοέμ 2009 18:31

Javascript interpolation

Δημοσίευση από Akina » 04 Απρ 2011 01:16

Δοκίμασε αυτό ακριβώς όπως το δίνω :

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

var an_array = &#91;'1','2','3'&#93;;
document.write&#40;"<p>" + an_array.length+ "</p>"&#41;; //αν σου δουλέψει σβήσε αυτό
for&#40;var i=0; i<an_array.length; i++&#41;&#123;
document.write&#40; "<div id='"+an_array&#91;i&#93;+"'>hello world</div>"&#41;;
&#125;
μην παίρνεις copy μονο το κομμάτι που νομίζεις ότι είναι λάθος .. σου έχουνε δόση σωστό κώδικα τα παιδιά ..και κανε comment το δικό σου γιατί όντως κολλάει όλο το script :wink:

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Javascript interpolation

Δημοσίευση από Christianago » 04 Απρ 2011 01:35

Μα ολο το κομματι πηρα. Μπορει να φταιει το γεγονος οτι κατι στον κωδικα μου μπλοκαρει την σωστη εκτελεση αυτου του σημειου.
Ειναι πολλες γραμμες κι εχει γινει δυσαναγνωστος.
Το ξερω οτι ειναι σωστος ο κωδικας που μου δωσανε.
Δε χρειαστηκε καν να τον δοκιμασω, ετσι ερμηνευονται στη javascript οι μεταβλητες ως κυριολεκτικες.
Μαλλον στο δικο μου κωδικα κατι αλλο παει στραβα και πιθανως να μην ειναι το συγκεκριμενο σημειο.

Akina
Δημοσιεύσεις: 89
Εγγραφή: 25 Νοέμ 2009 18:31

Javascript interpolation

Δημοσίευση από Akina » 04 Απρ 2011 01:38

δηλαδή να φανταστώ ότι ούτε αυτό δούλεψε ? πρέπει να τον ψάξεις γραμμή γραμμή μέχρι να βρείς το σημείο που έχεις πρόβλημα :(

Άβαταρ μέλους
Christianago
Δημοσιεύσεις: 332
Εγγραφή: 12 Νοέμ 2009 13:36

Javascript interpolation

Δημοσίευση από Christianago » 04 Απρ 2011 01:49

Δεν ξερω ρε παιδια αλλα πώς γινεται ενας διαφορετικος ορισμος ενος απαριθμητου τυπου πινακα να κανει τη διαφορα;
Πινακας ειναι σε καθε περιπτωση. Η προσπελαση ειναι αυτη που ενδιαφερει.
Παντως το an_array.length δουλεψε, δεν ηταν προβλημα.
Εβγαλε το αναμενομενο: 3.

Απάντηση

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

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

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