php.de

Zurück   php.de > Webentwicklung > JavaScript, Ajax und mehr

JavaScript, Ajax und mehr dynamisches Scripten und Interaktion auf Clientebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.10.2011, 11:53  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard [Erledigt] event im window onload is not defined

Hallo Leute,

ich habe glaub ne Brett vorm Kopf.

Ich habe mir ne JS Funcktion geschrieben.

Code:
var overColor = function(pEvent)
{
    var ev = eventValues(pEvent);
    ev.currentElem.t.style.backgroundColor = "#fff";
}

var outColor = function(pEvent)
{
    var ev = eventValues(pEvent);
    ev.currentElem.t.style.backgroundColor = "#c1c1c1";
}

var changeTableLineColor = function(pEvent)
{
    var ev = eventValues(pEvent);
    
    if(document.addEventListener) {
        document.getElementById(ev.currentElem.t.getAttribute('id')).addEventListener(
            "mouseover", overColor, false
        );
        document.getElementById(ev.currentElem.t.getAttribute('id')).addEventListener(
            "mousout", outColor, false
        );
    } else {
        
    }
}
Und rufe das so im window.onload auf.

Code:
if(document.getElementById('user_list_data') != null) {
                    changeTableLineColor(pEvent);
                }
Und die Fehlermeldung in der Konsole ist folgende.

Zitat:
Fehler: pEvent is not defined
Quelldatei:
Zeile: 60
Wie muss ich das im window.onlad beim Funktionaufruf schreiben damit mein Event erkannt wird?

Danke für eure Antworten Gruß Litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 31.10.2011, 13:20  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Code:
window.onload = function (ev) {
	if (!ev) ev = window.event;  //IE
	alert(ev);
	};
jspit ist offline   Mit Zitat antworten
Alt 31.10.2011, 13:21  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von litterauspirna Beitrag anzeigen
Und rufe das so im window.onload auf.

Code:
if(document.getElementById('user_list_data') != null) {
                    changeTableLineColor(pEvent);
                }
Und, gibt es an dieser Stelle eine Variable namens pEvent?
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 31.10.2011, 13:22  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Und, gibt es an dieser Stelle eine Variable namens pEvent?
Nein, aber ich dachte immer das an diese Stelle das Event automatisch eingahngen wird bzw. übergeben wird.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 31.10.2011, 13:30  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Nein, das passiert nur, wenn die Funktion direkt durch den Eventhandler-Mechanismus aufgerufen wird.
Du rufst sie an der Stelle aber selber auf, also musst du auch selber die nötigen Parameter übergeben (und natürlich dafür sorgen, dass diese vorhanden sind).


Wenn das Vorhandensein eines Elements mit der ID #user_list_data allerdings Voraussetzung für das korrekte Arbeiten der Funktion changeTableLineColor ist - warum prüft diese das dann nicht selber?
Dann könntest du auch gleich wieder window.onload = changeTableLineColor schreiben, und müsstest dich nicht darum kümmern, dass das event-Objekt übergeben wird (das passiert dann automatisch, s.o.)
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 31.10.2011, 13:37  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Nein, das passiert nur, wenn die Funktion direkt durch den Eventhandler-Mechanismus aufgerufen wird.
Du rufst sie an der Stelle aber selber auf, also musst du auch selber die nötigen Parameter übergeben (und natürlich dafür sorgen, dass diese vorhanden sind).


Wenn das Vorhandensein eines Elements mit der ID #user_list_data allerdings Voraussetzung für das korrekte Arbeiten der Funktion changeTableLineColor ist - warum prüft diese das dann nicht selber?
Dann könntest du auch gleich wieder window.onload = changeTableLineColor schreiben, und müsstest dich nicht darum kümmern, dass das event-Objekt übergeben wird (das passiert dann automatisch, s.o.)
Nein wie in mienem Code oben zu sehen ist es so das die IDs durch die ein Event ausgelöst dynamisch entsteht. Das sind Datensätze aus eine DB und die ID ist pro Tabellenzeile eine andere.
Bei einem Doppelklick auf eine Tabellenzeile soll dann ein DIV sich einblenden, aber das schaffe ich dann auch allein.
Die IF Kontrolle da verhindert nur Fehlermeldungen das die eine ID null ist. Von der geht aber kein Eventaus.
Dann habe ich den Eventlistener der im window.onload aufgerufen wird und da ich in der Funktion durch das target Attribut die aktuelle ID ermittle muss ich das event beim Aufruf an der Stelle übergeben, weiß aber im Moment absolut nicht wie ich das richtig anstellen soll.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 31.10.2011, 13:56  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von litterauspirna Beitrag anzeigen
Nein wie in mienem Code oben zu sehen
In ein paar hingeworfenen, konfus wirkenden Fetzen JS-Code ist für mich nicht viel zu erkennen …

Zitat:
Die IF Kontrolle da verhindert nur Fehlermeldungen das die eine ID null ist. Von der geht aber kein Eventaus.
Und welche Bedeutung hat sie dann?
Warum ist es wichtig, wie zu prüfen?

Zitat:
Dann habe ich den Eventlistener der im window.onload aufgerufen wird und da ich in der Funktion durch das target Attribut die aktuelle ID ermittle muss ich das event beim Aufruf an der Stelle übergeben, weiß aber im Moment absolut nicht wie ich das richtig anstellen soll.
Dass in der Funktion, die einen Event behandelt, die Referenz auf das auslösende Element in this bereitsteht*, ist dir noch nicht bekannt?

* wenn man Eventhandler dynamisch an Elemente bindet, nicht per HTML-Attribut.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 31.10.2011, 14:14  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Wie so ein paar Fetzen konfus wirkenden Code? Da steht doch alles eigentlich recht nachvollziehbar oder nicht?

Aber ok dann mal hier das HTML noch dazu.

PHP-Code:
<table cellpadding="0" cellspacing="0" id="user_list_data">
                <?php foreach($pList as $key => $value) : ?>
                <tr id="us_<?php echo $value['id_user']; ?>" class="user_head_line">
                    <td class="user_list_field">
                        <?php echo $value['first_name']; ?> <?php echo $value['last_name']; ?>
                    </td>
                    <td class="user_list_field">
                        <?php echo $value['log_name']; ?>
                    </td>
                    <td class="user_list_field">
                        <?php echo date("d.m.Y"strtotime($value['birthday'])); ?>
                    </td>
                    <td class="user_list_field" style="border-right: 1px solid #000;">
                        <?php echo $value['free']; ?>
                    </td>
                </tr>
                <?php endforeach; ?>
            </table>
Also eine Tabelle und in dem tr Attribut steht dei ID für das Element drin und die dynamisch.
Wenn ein Doppelklick auf eine Zeile gemacht wird soll sich ein DIV einblenden.
Hier gehts erst mal darum das sich die Farbe einer mit der Maus überfahrenen Zeile ändert.
So dann nun hier nochmal das JS.

Code:
var overColor = function(pEvent)
{
    var ev = eventValues(pEvent);
    ev.currentElem.t.style.backgroundColor = "#fff";
}

var outColor = function(pEvent)
{
    var ev = eventValues(pEvent);
    ev.currentElem.t.style.backgroundColor = "#c1c1c1";
}

var changeTableLineColor = function(pEvent)
{
    var ev = eventValues(pEvent);
    
    if(document.addEventListener) {
        document.getElementById(ev.currentElem.t.getAttribute('id')).addEventListener(
            "mouseover", overColor, false
        );
        document.getElementById(ev.currentElem.t.getAttribute('id')).addEventListener(
            "mousout", outColor, false
        );
    } else {
        
    }
}
In changeTableLineColor übergebe ich mit pEvent den Event.

Hier meine JS Config.
In der stehen Sachen wie Position der Maus etc.
Code:
var eventValues = function(pEvent) {
    pEvent = pEvent || window.event;
    var target = pEvent.target || pEvent.srcElement;
    
    var xE = null;
    var yE = null;
    
    if(pEvent.pageX && pEvent.pageY) {
        xE = pEvent.pageX;
        yE = pEvent.pageY;
    } else {
        xE = pEvent.clientX + ( document.body.scrollLeft + document.body.parentNode.scrollLeft );
        yE = pEvent.clientY + ( document.body.scrollTop + document.body.parentNode.scrollTop );
    }
    
    var conf = {
        'pM' : {
            'x' : xE,
            'y' : yE
        },
        'pE' : {
            'x' : target.offsetLeft,
            'y' : target.offsetTop
        },
        'sE' : {
            'w' : target.offsetWidth,
            'h' : target.offsetTop
        },
        'currentElem' : {
            'e' : pEvent = pEvent || window.event,
            't' : target = pEvent.target || pEvent.srcElement
        }
    }
    
    return conf;
}
So mein einziges Problem was ich aber habe ist das ich nicht weiß wie ich nun im onload den Event als aktuellen Parameter übergebe.
Mit ein this funktioniert das nicht, dann meckert mich an das er target nicht kennt.

So di ID user_list_data ist die ID der gesamten Tabelle und die nutze ich zur Prüfung. Dann kann die Funktion erst ausgeführt werden wenn die Tabelle bekannt ist, so verhindere ich, dass wenn ich nicht diese DAtei aufrufe eine Fehlermeldung.

Wie kann ich also den Event als aktuellen Parameter übergeben?
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Alt 31.10.2011, 14:34  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von litterauspirna Beitrag anzeigen
Wie so ein paar Fetzen konfus wirkenden Code? Da steht doch alles eigentlich recht nachvollziehbar oder nicht?
Nee, auf mich macht das alles eher einen ziemlich unlogischen Eindruck …

Zitat:
So mein einziges Problem was ich aber habe ist das ich nicht weiß wie ich nun im onload den Event als aktuellen Parameter übergebe.
Mit ein this funktioniert das nicht, dann meckert mich an das er target nicht kennt.
Natürlich ist an dieser Stelle kein target bekannt - denn der Event ist der load-Event, und der hat kein target.

Zitat:
So di ID user_list_data ist die ID der gesamten Tabelle und die nutze ich zur Prüfung. Dann kann die Funktion erst ausgeführt werden wenn die Tabelle bekannt ist, so verhindere ich, dass wenn ich nicht diese DAtei aufrufe eine Fehlermeldung.
Trotzdem m.E. Unfug, diese Prüfung an der Stelle zu machen.

Warum packst du das nicht in die Funktion changeTableLineColor mit rein?
Dann kann die, wenn es #user_list_data gibt, damit ihr Zeug machen – und wenn nicht, dann tut sie einfach nichts.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 31.10.2011, 14:50  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Ja ok, aber meine Frage war wie bekomme ich richtig da im onload den Event den ich auslösen will übergeben?
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
PHP Script funktioniert nicht mehr. PhvK PHP Einsteiger 33 30.08.2011 08:59
Facebook Event via PHP posten codeboot PHP Einsteiger 2 09.08.2011 13:36
[Adobe AIR] onload für Bilder b@n@ne JavaScript, Ajax und mehr 0 04.12.2010 00:09
JQuery Modal Window Xeo JavaScript, Ajax und mehr 2 14.11.2010 17:44
Event mit Datumsberechnung Todeshügel Datenbanken 16 11.11.2010 08:45
Doppeltes OnLoad nicht möglich? Fireball22 JavaScript, Ajax und mehr 21 19.09.2009 13:09
variable mit onclick an php drombusch PHP Tipps 2009 8 30.08.2009 14:45
[Erledigt] OnClick event abbrechen Frank JavaScript, Ajax und mehr 4 25.08.2009 12:15
[Erledigt] echo &quot;test&quot;; firebug: test is not defined Tascha PHP Tipps 2009 1 24.07.2009 08:51
Fehler beim kompilieren von php 5.2.9 malio Server, Hosting und Workstations 11 05.06.2009 18:40
Event: User Regestrierung in die Datenbank??? Dunkelelf9 Datenbanken 2 22.12.2008 15:49
Event in Kalender ausgeben zoro PHP Tipps 2007 3 02.05.2007 13:40
[Erledigt] Popup Window PHP Tipps 2005-2 4 31.12.2005 20:18
[Erledigt] probleme mit event datenbank Datenbanken 1 04.09.2004 00:30

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
event is not defined, onload is not defined, \'window\' is not defined., addeventlistener tabelle, \'window\' is not defined, javascript event is not defindet, window is not defined, onload werte übergeben, javascript event is not defined, onload variable übergeben, \is not defined\, ie document.body.onload window.onload, window.onload is not defined, php window.onload

Alle Zeitangaben in WEZ +2. Es ist jetzt 11:41 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum