2016-07-24 5 views
0

Ich möchte eine ganz grundlegende Frage stellen. Ich muss herausfinden, wie man einen String-Wert in einer Funktion als ein Parameter ohne Anführungszeichen darauf senden kann. sowie. meine HTML-Datei würde wie folgt aussehen: -Wie übergeben Sie eine Zeichenfolge als Parameter mit beliebigen Anführungszeichen in Javascript

<p id='demo'> 
</p> 

und JS-Code wäre: -

function Random(data){ 
    document.getElementById("demo").data = "Paragraph changed!"; 
} 

Random(textContent); 

aber es funktioniert einfach nicht! Also kann ich eine andere Technik verwenden, um die Arbeit zu erledigen, oder ist es im Grunde unmöglich?

+1

Was meinst du damit, wenn du sagst es "funktioniert nicht?" Was hast du erwartet und was ist eigentlich passiert? – smarx

+0

versuchen Sie dies: 'document.getElementById (" demo "). InnerHTML =" Absatz geändert! ";' – demo

+0

Meine Frage war allgemein, ich wollte wissen, wie man auf ein Attribut eines Objekts mit einer String-Variablen zugreifen kann Jungs antworteten mir unten. Also Prost Kumpel! – Drazxier

Antwort

0

Sie keinen String „ohne Anführungszeichen passieren kann "In einem JS-Programm ist Text, der nicht von Anführungszeichen umgeben ist, kein string, es ist ein expression.

Ihr Code funktioniert aus mehreren Gründen nicht so, wie Sie denken. Erstens, Sie tun nichts mit dem data Parameter, der übergeben wird. .data ist eine Eigenschaft des DOM-Elements, das Sie mit getElementById abgerufen haben. data ist der Literalname der Eigenschaft, auf die Sie zugreifen, es handelt sich nicht um einen Verweis auf den Wert des Parameters data. Um eine Eigenschaft mit dem Namen zuzugreifen, die Sie als data Variable übergeben Sie müssen bracket notation instead of dot notation verwenden, darauf zuzugreifen:

function random(data) { 
    document.getElementById("demo")[data] = "Paragraph changed!"; 
} 

random("textContent"); 

Sie werde ich den Namen der Funktion Random-random bemerken geändert. Dies liegt daran, dass es sich um einen convention in JS to only use capitalized names für constructor functions handelt.

Der andere Grund, warum es nicht funktioniert, ist wegen Ihres Versuchs, eine "Zeichenfolge" ohne Anführungszeichen zu verwenden. Wenn eine JavaScript-Engine random(textContent); sieht, interpretiert sie das als Aufruf random, wobei der Wert einer Variablen mit dem Namen textContent als erster Parameter übergeben wird. Da Sie keine Variable mit dem Namen textContent definiert haben, ist der übergebene Wert undefined. Wenn Sie es zitieren, wird es in ein String-Literal umgewandelt, wodurch die gewünschte Zeichenfolge übergeben wird.

+0

Ich bin verwirrt, warum diese (und die andere Antwort) abgelehnt wurden. Wenn etwas mit beiden nicht stimmte, wäre es schön zu wissen, was. –

+0

Vielen Dank, Mann! Darauf habe ich mich gefreut .. Vielen Dank für die Antwort! Ich bin eigentlich ein Anfänger hier im Stapelüberlauf. – Drazxier

+0

Ich bin froh, dass es geholfen hat und willkommen in SO :-) Wenn eine Antwort hilfreich ist, [sollte] (http://stackoverflow.com/help/someone-answers) upvote es (normalerweise [Sie brauchen 15 Rufpunkte] (http: // Stapelüberlauf.com/help/priviles/vote-up) zu upvote, was nicht schwer zu bekommen sein sollte, wenn Sie weiterhin an SO teilnehmen; Ich bin nicht sicher, ob Sie Antworten auf Ihre eigene Frage ohne 15 rep upv aufbringen können oder nicht). Sie sollten auch die hilfreichste Antwort als [akzeptiert] (http://stackoverflow.com/help/accepted-answer) markieren. –

1

Ihr Code korrekt ist, aber wenn Sie ein Attribut eines Objekts mit einem String-Variable zugreifen wollen, werden Sie es so tun müssen:

document.getElementById("demo")[data] = "Paragraph changed!" 
+1

Wow, ich habe nicht verstanden, dass das ist, was er gefragt hat ... – Paul

+0

Danke Mann! Ich freute mich darauf, wie ich auf das Attribut zugreifen konnte. Aber ich wusste nicht viel von der Terminologie .. Prost Kumpel! – Drazxier

Verwandte Themen