2016-04-02 7 views
1

Mein Problem ist, dass, wenn ich ein Skript-Tag Trog erstellen javascriptFunktion innerhalb eines Tags Skript über Javascript eingefügt bleibt undefiniert

var script = document.createElement('script');  
    script.setAttribute('type', 'text/javascript'); 
    document.getElementById("fastexe").appendChild (script); 

(die div Eltern des Skripts vor diesem Skript ist) und ich eine Funktion einfügen in mag es so

script.innerHTML = "function in_my_script(){ \n"; 
    script.innerHTML += "alert('test'); \n }"; 

wenn ich versuche, meine Funktion (function_in_my_script) über die Konsole zu nennen oder auch wie folgt aus:

script.innerHTML += "\n function_in_my_script();"; 

Ich bekomme eine Funktion nicht definiert Fehler, anscheinend keinen Grund. Ich habe versucht mit verschiedenen Funktionsnamen, nichts innerhalb der Funktion und verschiedene Alarme in der Funktion, aber nichts änderte das Ergebnis.

Ich verstehe nicht, warum die Funktion undefiniert bleibt. Danke für Ihre Hilfe.

+1

Welche Browser sind Sie in dies zu tun? Afaik, einige haben Probleme mit 'innerHTML' auf Skript-Elementen – Bergi

+1

Sie sollten versuchen, das Skript-Element zu füllen, bevor Sie es an das DOM anhängen. Afaik, das ist das einzige Mal, wenn es ausgewertet wird. – Bergi

+0

Ihre Funktion heißt 'in_my_script', nicht' function_in_my_script'. Wenn dies nur ein Beispielcode ist, bearbeiten Sie Ihre Frage bitte. – Xufox

Antwort

1

Jedes Mal, wenn Sie eine Zeichenfolge an das Element innerHTML des Elements SCRIPT anhängen, versucht der Browser, das Element auszuführen. Dies führt zu einem Syntaxfehler, wenn die SCRIPT einfach function in_my_script(){ ist.

Stattdessen bauen den Inhalt des Skripts in einer Variablen, und sie fügen Sie dann sofort script.innerHTML alle:

var script = document.createElement('script'), 
 
    s; 
 

 
script.setAttribute('type', 'text/javascript'); 
 
document.getElementById("fastexe").appendChild(script); 
 

 
s = "function in_my_script(){ \n"; 
 
s += "alert('test'); \n }"; 
 
s += "\n in_my_script();"; 
 

 
script.innerHTML= s;
<div id="fastexe"></div>

+0

Arbeiten! Vielen Dank, nie gelernt, es könnte so interpretiert werden! – Apotheose

Verwandte Themen