Lanike71 Δημοσ. 28 Δεκεμβρίου 2020 Δημοσ. 28 Δεκεμβρίου 2020 Καλησπέρα, δεν το βάζω στο web development καθώς είναι μια απλή ερώτηση περί js. Δοκίμασα να συγκρίνω 2 strings τα οποία περιέχουν το χαρακτήρα & και ενώ φαινομενικά είναι ίδια, η σύγκριση βγάζει σφάλμα. Για να επαληθεύσω, έβαλα το χαρακτήρα μέσα σε άλλα strings και όντως αυτό έφταιγε. Κάποια λύση;
Επισκέπτης Δημοσ. 28 Δεκεμβρίου 2020 Δημοσ. 28 Δεκεμβρίου 2020 if('we&'==='we&') console.log('einai'); VM650:1 einai Δώσε παράδειγμα.
Lanike71 Δημοσ. 28 Δεκεμβρίου 2020 Μέλος Δημοσ. 28 Δεκεμβρίου 2020 Η σύγκριση γινόταν ανάμεσα σε 2 strings 'Α & Β'. Δοκίμασα και πάλι με διαψεύδει, το βγάζει true. Η μόνη διαφορά είναι ότι το ένα string το παίρνω από innerHTML ενός table και το συγκρίνω με το άλλο...Υπάρχει περίπτωση να έχει κάποιες διαφορές και να βγαίνει false; Αισθάνομαι πολυ χαζός.
coffeex Δημοσ. 28 Δεκεμβρίου 2020 Δημοσ. 28 Δεκεμβρίου 2020 6 λεπτά πριν, Lanike71 είπε Η σύγκριση γινόταν ανάμεσα σε 2 strings 'Α & Β'. Δοκίμασα και πάλι με διαψεύδει, το βγάζει true. Η μόνη διαφορά είναι ότι το ένα string το παίρνω από innerHTML ενός table και το συγκρίνω με το άλλο...Υπάρχει περίπτωση να έχει κάποιες διαφορές και να βγαίνει false; Αισθάνομαι πολυ χαζός. Μπορείς να κάνεις copy-paste εδώ τις 2 τιμές της σύγκρισης που βγάζουν το false;
Moderators Kercyn Δημοσ. 28 Δεκεμβρίου 2020 Moderators Δημοσ. 28 Δεκεμβρίου 2020 Μήπως το ένα έχει ελληνικούς χαρακτήρες και το άλλο λατινικούς; Βέβαια χωρίς τις τιμές που σου δημιουργούν πρόβλημα μόνο να μαντέψουμε μπορούμε.
Predatorkill Δημοσ. 28 Δεκεμβρίου 2020 Δημοσ. 28 Δεκεμβρίου 2020 Αν ειναι διαφορετικο το encoding τοτε το IDE θα στο ελεγε (τουλαχιστον το webstorm στο λεει).
Lanike71 Δημοσ. 28 Δεκεμβρίου 2020 Μέλος Δημοσ. 28 Δεκεμβρίου 2020 Η πλάκα είναι ότι μιλάμε για το ίδιο string, που περνάει από διάφορες φάσεις. Διαβάζεται από csv, αποθηκεύεται σε array και μετά μπαίνει σε html table. Όταν φτάνει να γίνει η σύγκριση μεταξύ των 2, δηλ. του αποθηκευμένου στο array και του innerHTML, εκεί χτυπάει. Και το κάνει μόνο σε αυτά που έχουν μέσα το χαρακτήρα &. Ίσως το κάνει και σε άλλα, απλά δεν το ξέρω ακόμα.
papmel Δημοσ. 28 Δεκεμβρίου 2020 Δημοσ. 28 Δεκεμβρίου 2020 (επεξεργασμένο) εφτιαξα ενα html αρχειο με τον εξης κωδικα μεσα <script> if('we&'==='we&') console.log('einai'); </script> μια χαρα παιζει. βγαζει einai. φτιαξε μια λοοπα με το str.charCodeAt() Και δες και τις δυο μεταβλητες αν ειναι ιδιες at runtime. Επεξ/σία 28 Δεκεμβρίου 2020 από papmel
tsofras Δημοσ. 28 Δεκεμβρίου 2020 Δημοσ. 28 Δεκεμβρίου 2020 Μπορείς να μας βάλεις λίγο τον κώδικα ? Αν χρησιμοποιείς objects τότε το == καλά κάνει και επιστρέφει false γιατί μπορεί να έχουν την ίδια τιμή αλλά είναι διαφορετικά objects Χρησιμοποίησε το String.valueOf για να τα συγκρίνεις ή βάλε μας τον κώδικα να δούμε τι μπορεί να πάει στραβά
Lanike71 Δημοσ. 28 Δεκεμβρίου 2020 Μέλος Δημοσ. 28 Δεκεμβρίου 2020 Χρησιμοποίησα το String.valueOf και όντως δούλεψε...Περίεργο. Επίσης ψάχνοντας, δούλεψε το innerText σωστά και αυτό θα χρησιμοποιήσω. Μάλλον πρέπει να δω και τη διαφορά innerHTML με innerText. Ευχαριστώ όσους ασχολήθηκαν. 1
tsofras Δημοσ. 28 Δεκεμβρίου 2020 Δημοσ. 28 Δεκεμβρίου 2020 11 λεπτά πριν, Lanike71 είπε Χρησιμοποίησα το String.valueOf και όντως δούλεψε...Περίεργο. Επίσης ψάχνοντας, δούλεψε το innerText σωστά και αυτό θα χρησιμοποιήσω. Μάλλον πρέπει να δω και τη διαφορά innerHTML με innerText. Ευχαριστώ όσους ασχολήθηκαν. Να πώ την αλήθεια javascript δεν ξέρω , αλλά ξέρω Java Όταν κάνεις == τότε ουσιαστικά κοιτάς αν ένα object είναι ίδιο με ένα άλλο. Τα 2 Strings που έχεις εσύ μπορεί να έχουν ίδια τιμή αλλά δεν είναι ίδιο το instance του Object για αυτό και δεν περνάει η ισότητα. Αυτός επίσης είναι και ο λόγος που παίζει με το valueOf γιατί απλά ελέγχεις αν είναι ίδιες οι τιμές των Objects και όχι τα ίδια τα Objects. Αν δεν φτιάχνεις εσύ ο ίδιος τα objects τότε πρέπει να δείς τι γίνεται απο πίσω (π.χ. όπως λές αν η innerHTML σου φτιάχνει νέο Object για κάθε λεκτικό , οπότε αν π.χ. έχεις 2 textfields σε εσένα τελικά καταλήγουν 2 αντικείμενα που έχουν μέσα τους το ίδιο λεκτικό αλλά σαν instances είναι διαφορετικά) Ξαναλέω δεν ξέρω αν ισχύουν τα παραπάνω σε javascript αλλά πολύ πιθανό να είναι ίδια με την Java οπότε αυτό είναι το πρόβλημα σου Δες και αυτά που διαβάζω και εγώ τώρα έτσι για να πάρεις μία γεύση https://developer.mozilla.org/en-US/docs/Web/API/DOMString https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#String_primitives_and_String_objects 1
Lanike71 Δημοσ. 28 Δεκεμβρίου 2020 Μέλος Δημοσ. 28 Δεκεμβρίου 2020 Γιατί όμως σε όλα τα υπόλοιπα περνούσε η ισότητα; Το μόνο που έγραφα ήταν if(myArray[i] === table.rows[i].cells[3].innerHTML) doThat(); και έτρωγε κόλλημα μόνο σε αυτό. Τελικά δούλεψε όπως είπα με table.rows[i].cells[3].innerText
tsofras Δημοσ. 28 Δεκεμβρίου 2020 Δημοσ. 28 Δεκεμβρίου 2020 Μήπως έκανε κάποια μετατροπή το & σε ? Τύπωσε και τα 2 να δείς την διαφορά
Lanike71 Δημοσ. 28 Δεκεμβρίου 2020 Μέλος Δημοσ. 28 Δεκεμβρίου 2020 ΟΚ, θα το κοιτάξω να δω τι έφταιξε.
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα