[JavaScript] Objekterstellung funktioniert nicht

Dieses Thema im Forum "Webentwicklung" wurde erstellt von Flyde, 29. März 2010 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 29. März 2010
    Objekterstellung funktioniert nicht

    Hi,

    heute mal mit ner Sache, die ich einfach nicht verstehe...

    Ich hab ne SuFu die folgendermaßen aufgebaut ist
    Code:
    <input type="text" id="artikelsuche" onKeyUp="ArtikelSuche.listener();" class="searchInput" />
    
    <table id="tbl_artikel">
    ....
    </table>
    
    var ArtikelSuche = new SearchEngine("tbl_artikel", "artikelsuche");
    Sobald ich etwas in die SuFu eingebe, gibt mir firebug: ArtikelSuche is not defined

    Als gegenbeispiel nen TabPanel (spry engine):
    Code:
    <div id="MaschinenPnl" class="TabbedPanels">
     <ul class="TabbedPanelsTabGroup">
     <li class="TabbedPanelsTab TabbedPanelsTabSelected" tabindex="0">Stammdaten</li>
     </ul>
     <div class="TabbedPanelsContentGroup">
     <div class="TabbedPanelsContent">
     usw.
     </div>
     ....
    </div>
    
    var MaschinenPnl = new Spry.Widget.TabbedPanels("MaschinenPnl");
    
    das klappt.


    Noch eine Info: ich lade die page via Prototype-AJAX

    HTML:
     this.edit = function(id, target, labelId, label)
     {
     new Ajax.Request(script,
     {
     method: 'get',
     parameters: {
     id: id,
     },
     
     onSuccess: function(transport) {
     var response = transport.responseText;
     
     /* Musste ich so machen, da Chrome nicht klar kam mit: 
    $(target).innerHTML = response; - 
    Gab ständig fehlermeldungen, 
    hatte ebenfalls ein eval() script für response, 
    da die Seite ja per AJAX geladen wird,
     aber das brauchte ich nicht mehr als ich das so umgestellt hatte, warum auch immer */
     $(target).innerHTML = '';
     $(target).insert(response);
    
    
     $(labelId).innerHTML = label;
     },
     onFailure: function() { alert(_ajaxReqErr); }
     });
     }
     
  2. 29. März 2010
    AW: Objekterstellung funktioniert nicht

    zu deinem kommentar im script: $(target).update(response);

    zu deinem eigendlichen fehler: ist "ArtikelSuche" global definiert? denn wenn nicht findet der event-handler die variable nicht im stack.

    versuch mal: window.ArtikelSuche = new SearchEngine(...);

    beispiel:
    Code:
    //richtig:
    function foo() { alert(bar); }
    var bar = 1;
    foo(); //1
    
    //falsch:
    function foo() { alert(bar); }
    function baz() { var bar = 1; }
    baz();
    foo(); //undefined variable "bar"
     
  3. 29. März 2010
    AW: Objekterstellung funktioniert nicht

    1. thx wegen $(node).update()
    2. tatsache... mit window geht das...

    Kannst du mir das mal näher erklären? bestimmt gibts dazu wieder was auf selfhtml, wie immer ^^

    Sehr großen dank mal wieder... ohne dich wärs ne nachtschicht geworden
     
  4. 29. März 2010
    AW: Objekterstellung funktioniert nicht

    also attribute wie "onkeydown" die direkt im html-quelltext beschrieben werden, werden als globale-funktionen interpretiert. d.h. diese funktion erben nur vom "window"-objekt.

    wenn du jetzt variablen in dieser funktion benötigst musst du sie global deklarieren - also innerhalb des obersten window-kontextes oder als argument übergeben.

    beispiel für kontext-vererbung:
    Code:
    var e = ""; //globale variable
    function a() {
     //in diesem bereich existieren alle globalen variablen - u.a. "e"
     function b() {
     //in dieser funktion existieren alle varialben von funktion "a" (also auch alle globalen)
     var c = "hallo"; //lokale variable
     e += c;
     }
    
     b();
    
     //funktion "b" wurde an dieser stelle verlassen - variable "c" existiert hier nicht mehr.
     var d = "welt"; //ebenfalls lokale variable
     e += " ";
     e += d;
    }
    
    //variable "c" und "d" existieren hier nicht mehr. 
    //ebenso ist die funktion "b" nun nicht mehr verfübar!
    //nur noch "e" ist vorhanden, weil sie in diesem kontekt deklariert wurde!
    alert(e); //hallo welt
    ganz erlich: das hat bei mir auch ein wenig gedauert, da ich davor nur php inne hatte. aber nach und nach wirds immer einfacher
     
  5. 29. März 2010
    AW: Objekterstellung funktioniert nicht

    ganz ehrlich, so gehts mir grad xD komm aus 100% PHP-Welt, krieg n auftrag: mach ma, so das es schön ist, webapp und bla - und ich press mir momentan über wochen tonnenweise wissen in meine birne

    B2T: die erklärung hat mir auf jedenfall was gebracht Und ich dachte mal ... javascript... n paar kleine spielereien hier und da.. aber nja, man lernt nie aus

    errinert mich dann eigentlich sehr stark an c mit heap und stack, innerhalb einer funktion sind alle variablen lokal und außerhalb von main() und funktionen global

    Leuchtet ein Problem solved
     
  6. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.