Θα ήθελα να περάσω μια παράμετρο (π.χ. μια συμβολοσειρά) σε μια συνάρτηση Onclick. Προς το παρόν, κάνω αυτό:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
με το result.name για παράδειγμα ίσο με το string "Add". Όταν κάνω κλικ σε αυτό το κουμπί, έχω ένα σφάλμα που λέει ότι το Add δεν έχει οριστεί. Δεδομένου ότι αυτή η κλήση συνάρτησης λειτουργεί τέλεια με μια αριθμητική παράμετρο, υποθέτω ότι έχει να κάνει με τα σύμβολα "" στη συμβολοσειρά. Είχε κανείς αυτό το πρόβλημα στο παρελθόν;
Φαίνεται ότι χτίζετε στοιχεία DOM από συμβολοσειρές. Απλά πρέπει να προσθέσετε μερικά εισαγωγικά γύρω από το result.name:
'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'
Θα πρέπει πραγματικά να το κάνετε αυτό με τις κατάλληλες μεθόδους DOM όμως.
var inputElement = document.createElement('input');
inputElement.type = "button"
inputElement.addEventListener('click', function(){
gotoNode(result.name);
});
document.body.appendChild(inputElement);
Απλά να γνωρίζετε ότι αν αυτό είναι ένας βρόχος ή κάτι τέτοιο, το result
θα αλλάξει πριν από την πυροδότηση του συμβάντος και θα πρέπει να δημιουργήσετε μια πρόσθετη φούσκα εμβέλειας για να σκιάσετε την μεταβαλλόμενη μεταβλητή.
Προτείνω να μην χρησιμοποιείτε καν χειριστές HTML onclick
και να χρησιμοποιήσετε κάτι πιο κοινό, όπως document.getElementById
.
HTML:
<input type="button" id="nodeGoto" />
JavaScript:
document.getElementById("nodeGoto").addEventListener("click", function() {
gotoNode(result.name);
}, false);
Επεξεργασία: Αν η απαίτηση είναι να αναφέρετε το παγκόσμιο αντικείμενο (js) στον κώδικα HTML σας, μπορείτε να δοκιμάσετε το εξής. [Μην χρησιμοποιείτε εισαγωγικά (' ή ") γύρω από τη μεταβλητή]
[Fiddle][1] Αναφορά: [Fiddle][1].
Javascript:
var result = {name: 'hello'};
function gotoNode(name) {
alert(name);
}
HTML:
<input value="Hello" type="button" onClick="gotoNode(result.name)" />