Jeg vil gjerne sende en parameter (dvs. en streng) til en Onclick-funksjon. For øyeblikket gjør jeg dette:
'<input type="button" onClick="gotoNode(' + result.name + ')" />'
med resultat.navn for eksempel lik strengen "Legg til". Når jeg klikker på denne knappen, får jeg en feil som sier at Add ikke er definert. Siden dette funksjonskallet fungerer perfekt med en numerisk parameter, antar jeg at det har noe å gjøre med symbolene " " i strengen. Har noen hatt dette problemet før?
Det ser ut som om du bygger DOM-elementer fra strenger. Du trenger bare å legge til noen anførselstegn rundt result.name:
'<input type="button" onClick="gotoNode(\'' + result.name + '\')" />'
Du bør virkelig gjøre dette med riktige DOM-metoder skjønt.
var inputElement = document.createElement('input');
inputElement.type = "button"
inputElement.addEventListener('click', function(){
gotoNode(result.name);
});
document.body.appendChild(inputElement);
Bare vær oppmerksom på at hvis dette er en loop eller noe, result
vil endre seg før hendelsen branner, og du'd trenger å opprette en ekstra omfang boble for å skygge skiftende variabel.
Jeg foreslår ikke engang å bruke HTML onclick
handlers, og bruke noe mer vanlig som document.getElementById
.
HTML:
<input type="button" id="nodeGoto" />
JavaScript:
document.getElementById("nodeGoto").addEventListener("click", function() {
gotoNode(result.name);
}, false);
Redigert: Hvis kravet er å referere til det globale objektet (js) i HTML-koden din, kan du prøve dette. [Ikke bruk anførselstegn (' eller ") rundt variabelen].
[Fiddle][1] referanse.
Javascript:
var result = {name: 'hello'};
function gotoNode(name) {
alert(name);
}
HTML:
<input value="Hello" type="button" onClick="gotoNode(result.name)" />