zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Javascript & Ajax
Seite neu laden JavaScript-Funktion umbauen/auslagern

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 01.12.2015, 14:45
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 30.11.2015
Beiträge: 13
chpo7234 befindet sich auf einem aufstrebenden Ast
Standard JavaScript-Funktion umbauen/auslagern

Moin Leute,

ich habe eine Textbox namens "Parents:
HTML-Code:
                  <div id="tboxes">
                    <input type="text" name="parents[]" class="config_textbox" oninput="addTbox(0)" style="width:200px"><br>
                  </div>
Und dazu diese Java-Script-Funktion:

Code:
    var addTbox = function(){
      var tbNumber = 0;
      var boxes = $("#tboxes");
      return function(lastNumber){
        if (lastNumber === tbNumber){
          tbNumber += 1;
          var newTbox = "<input type='text' name='parents[]' class='config_textbox' oninput='addTbox(" + tbNumber + ")' style='width:200px'><br>";
          boxes.append(newTbox);
        }
      }
    }();
Bei jeder Eingabe in die Textbox wird eine neue Textbox angehangen, falls die nächste Textbox noch nicht vorhanden ist.

Kurzes Verständnisbeispiel:
Benutzer gibt in Textbox1 etwas ein.
Ist Textbox 2 schon vorhanden? Ja => Nichts tun, Nein => Textbox2 erstellen

Benutzer gibt in Textbox2 etwas ein.
Ist Textbox 3 schon vorhanden? Ja => Nichts tun, Nein => Textbox3 erstellen


Jetzt wollte ich diese Funktion gerne auslagern:
Code:
    <script src="scripts/parents.js" type="text/javascript"></script>
Nun klappt sie allerdings nicht mehr.. Ich habe schon einigen Unsinn ausprobiert, kam aber zu keinem gültigen Ergebnis... Mich wundert auch der Funktionsbeginn:
Code:
var addTbox = function(){}
Normalerweise kannte ich das immer so:
Code:
function addTbox(){}

Kann mir da jemand weiter helfen?

Lieben Gruß
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 01.12.2015, 16:04
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Schau mal in die Web-Konsole
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 01.12.2015, 16:15
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 30.11.2015
Beiträge: 13
chpo7234 befindet sich auf einem aufstrebenden Ast
Standard

Hey protonenbeschleuniger,

das habe ich schon gemacht.

Wenn ich das Script auslagere und auf meiner gewünschten Seite denn importiere, denn funktioniert das Script nicht mehr. Im Firebug in der Konsole wird mir allerdings auch kein Fehler oder sonst etwas dazu angezeigt.

Was mich auch wundert: das Script funktioniert nur, wenn ich es unterhalb der HTML-Textbox definiere. Wenn ich das Script im Header ablege, den Button denn später im Body-Teil definiere, denn habe ich genau die gleiche Auswirkung: Funktion wird nicht ausgeführt, Fehlermeldung wird nicht ausgespuckt.

MfG
Mit Zitat antworten
  #4 (permalink)  
Alt 01.12.2015, 17:20
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Dann stimmt was mit der Skriptdatei nicht.
Mit Zitat antworten
  #5 (permalink)  
Alt 02.12.2015, 08:58
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 30.01.2014
Beiträge: 2.247
cloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblickcloned ist ein wunderbarer Anblick
Standard

Und was ist wenn du in der Konsole die Funktion händisch aufrufst?
Mit Zitat antworten
  #6 (permalink)  
Alt 02.12.2015, 13:03
Benutzerbild von Thielo
Web Ninja
XHTMLforum-Kenner
 
Registriert seit: 17.09.2009
Ort: Stuttgart oder so
Beiträge: 3.372
Thielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein LichtblickThielo ist ein Lichtblick
Standard

Hochladen

(ja, es ist schwierig, keiner der eine Frage hat, besitzt die Gabe des "Ich lade mal eben mein Problem hoch!")
__________________
Hier ein immer gültiges Statement: Überarbeite deine Code, lerne die Grundlagen, widersprich mir nicht, wehre dich nicht, ich habe Recht, wir sind Lolgion, wir sind viele.. potato...
All meine Angaben sind ohne Gewähr, es könnte also trotz meiner Unfehlbarkeit dazu kommen dass ich falsch liege

www.richard-thiel.de | Müssen Websiten überall gleich ausschauen?
Mit Zitat antworten
  #7 (permalink)  
Alt 02.12.2015, 13:38
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von chpo7234 Beitrag anzeigen
Mich wundert auch der Funktionsbeginn:
Code:
var addTbox = function(){}
Normalerweise kannte ich das immer so:
Code:
function addTbox(){}

Kann mir da jemand weiter helfen?
Da schon.

Das ist kein "Funktionsbeginn", sondern es wird einfach einer Variabeln eine Funktion zu gewiesen.

Deine Kurzfassung entspricht aber nicht dem von dir gezeigten Code. Er ist tatsächlich noch komplexer. Dort wird zur Laufzeit eine Funktion aufgerufen, deren Rückgabe wiederrum eine Funktion ist. Dadurch ist addTbox eine Funktionsreferenz, die in JS mit einer einfachen Klammer aufgerufen wird. Du kannst dir das betrachten in dem du dir den Inhalt mit alert(addTbox); (ohne Klammer!) mal anschaust.

Dadurch wird ein lokaler "Namespace" gebaut und die Variabel boxes und tbNumber gekapselt.

Daneben gibt es noch einen zweiten Unterschied zwischen der Zuweisung einer Variabeln und der Deklaration mit einem Funktionskörper, im zweiten Fall findet ein Hoisting statt.
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Javascript Link innerhalb von Funktion f0x Javascript & Ajax 1 17.07.2011 19:46
#-Anker der Javascript Funktion ausführt? sepp88 Javascript & Ajax 11 08.01.2010 15:25
PHP Variable in JavaScript Funktion nutzen Hashishin Javascript & Ajax 4 24.11.2009 20:58
Impressumsaufruf mit Javascript Sinclair Javascript & Ajax 6 19.05.2008 16:41
[PHP] Funktion zum Optimieren von CSS Floele Serveradministration und serverseitige Scripte 2 13.08.2005 11:31


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:12 Uhr.