Autor Beitrag
Heiko
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Di 05.06.07 18:24 
Hallo,

ich verzweifle gerade mal wieder bei JS. Und zwar habe ich eine Funktion SetStatusbarText die auf einer bestimmten Komponente einen Hint setzt. Da ich diese Funktion nun an mehreren Stellen brauche und es ja ne Menge Servertraffic frisst wenn es 20x in einer Seite steht und es auch anders gehemn sollte, versuche ich das ganze jetzte per JS.

Momentan sieht die HTML so aus:
ausblenden Quelltext
1:
<td><input type="text" title="Test" name="loginname" id="loginname" maxlength="255" onmouseover="SetStatusbarText('Hier bitte Ihren Loginnamen eingeben!')" onmouseout="SetStatusbarText('')" onkeyup="CheckLoginData()" /></td>					

Später soll sie so hier aussehen
ausblenden Quelltext
1:
<td><input type="text" title="Test" name="loginname" id="loginname" maxlength="255" title="Hier bitte Ihren Loginnamen eingeben!" onkeyup="CheckLoginData()" /></td>					

Und die beiden Eriegnisse, die ich vorher da hatte, sollen nun per JS eingefügt werden.

Allerdings funktioniert es nicht :(:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
function SetStatusbarText(text){
  document.getElementById('statusbar').innerHTML = text;
}

/*...*/

function SetHintMethods(parent){
  var node = parent.firstChild;
  while(node != null)
  {
    if (node.nodeType === 1) {
      node.onmouseover = "SetStatusbarText('bla')";
      SetHintMethods(node);
    }
    node = node.nextSibling;
  }
}

function OnLoad(){
  if (document.getElementById('loginbutton')) CheckLoginData();
  SetHintMethods(document.body);
}

Theoretisch müsste jetzte überall "bla" in meiner SDtatusbar ausgegeben werden, aber das passiert nicht. Wo habe ich den Fehler?

Grüße
HEiko
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 10.06.07 14:35 
Ich habe es jetzte "notdürftig" hinbekommen:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
function SetStatusbarText(text){
  document.getElementById('statusbar').innerHTML = text;
}

function SetStatusbarHint(obj){
  obj.onmouseover = function(){ SetStatusbarText(obj.title) };
  obj.onmouseout  = function(){ document.getElementById('statusbar').innerHTML = "" };
}

function SetHintMethods(parent){
  var node = parent.firstChild;
  while(node != null)
  {
    if (node.nodeType === 1) {
      if (node.title != "") {
        SetStatusbarHint(node);
      }
      SetHintMethods(node);
    }
    node = node.nextSibling;
  }
}

function OnLoad(){
  SetHintMethods(document.body);
}


Auch wenn es noch nicht so ist, wie ich es mir gewünscht hätte. Denn am liebste hätte ich, dass statt der Zeile
ausblenden Quelltext
1:
SetStatusbarText(obj.title)					

das hier stehen würde:
ausblenden Quelltext
1:
SetStatusbarText(this)					

also das trhis dann das Element ist, welches die Funktion aufgerufen hat. Kann ich das irgendwie hinbiegen?
blackbirdXXX

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: So 17.06.07 01:59 
ausblenden Quelltext
1:
2:
function foo() { ... };
foo.call({dieses: "object", wird: "this"}, arg1, arg2);

Hilft dir das?

_________________
Klein, schwarz und ärgert Techniker? Jumper!
Ghostwalker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 17

Windows XP Prof.
Turbo Delphi 2006, Delphi 7 Prof.
BeitragVerfasst: So 17.06.07 09:01 
Ansonsten schau dir mal die Bilbeo an, die kann Events dynamisch zuweisen:

prototype-Javascript-Bibleothek

_________________
Gruß Ghostwalker
Es gibt keine Probleme, nur noch nicht gefundenen Lösungen
blackbirdXXX

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: So 17.06.07 09:56 
user profile iconGhostwalker hat folgendes geschrieben:
[url=prototypejs.org/]pro...ipt-Bibleothek[/url]

Wurgs. Bitte kein Prototype. Lieber jQuery.
Das ständige rumgefummle am Object prototype (und auch an allen anderen prototypen) ist nervig bis zum geht nicht mehr.

_________________
Klein, schwarz und ärgert Techniker? Jumper!
Ghostwalker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 17

Windows XP Prof.
Turbo Delphi 2006, Delphi 7 Prof.
BeitragVerfasst: So 17.06.07 16:18 
Hab mir grad mal die Jquery angesehen. Ich würde mal sagen, das beide Bibleotheken sich nicht viel schenken. Der Funktionsumfang ist der gleiche. Somit ist das wohl eine Frage des persönlichen Geschmacks :)

_________________
Gruß Ghostwalker
Es gibt keine Probleme, nur noch nicht gefundenen Lösungen
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: So 17.06.07 19:06 
Hallo,

auf prototype bzw. Jquery möchte ich nicht umsteigen, denn ich arbeite an einem Browsergame mit und da ist jeder gesparte Byte wertvoll (u.a. deswegen die auslaggerung der Hints, da das vom Browser ja schlecht gecacht wird) ;). Und ich schätze mal, dass das doch kein all zu kleines Paket ist, was die Erweiterungen da erst einmal übertragen müssen. Oder was habt ihr da fürne Erfahrungen?

Und nicht zu vergessen: Als kommerzielles Projekt muss man die Lizenzen mitbeachten, und da möchte ich uns lieber nicht von irgendeinem Projekt abhängig machen;).



user profile iconblackbirdXXX hat folgendes geschrieben:
ausblenden Quelltext
1:
2:
function foo() { ... };
foo.call({dieses: "object", wird: "this"}, arg1, arg2);

Hilft dir das?

Mhm, mit der zweiten Zeile kann ich nicht viel Anfangen, denn "dieses" und "wird" gibt es bestimmt unter JS nicht. (Deutsch unter JS??) ;).

Grüße
Heiko
Ghostwalker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 17

Windows XP Prof.
Turbo Delphi 2006, Delphi 7 Prof.
BeitragVerfasst: So 17.06.07 19:25 
Die größe dürfte kein Problem sein, da es sich ja um eine extra Datei handelt die nur 1 mal übertragen werden muß (landet dann im Cache :) ). Bei Prototype sinds 94 KByte und bei JQuery 55 KByte. Da beide unter der MIT-Lizenz stehen sollte es auch kein Problem damit geben :)

_________________
Gruß Ghostwalker
Es gibt keine Probleme, nur noch nicht gefundenen Lösungen
blackbirdXXX

ontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 1077
Erhaltene Danke: 1

Ubuntu Dapper

BeitragVerfasst: Mo 18.06.07 18:20 
user profile iconHeiko hat folgendes geschrieben:
user profile iconblackbirdXXX hat folgendes geschrieben:
ausblenden Quelltext
1:
2:
function foo() { ... };
foo.call({dieses: "object", wird: "this"}, arg1, arg2);

Hilft dir das?

Mhm, mit der zweiten Zeile kann ich nicht viel Anfangen, denn "dieses" und "wird" gibt es bestimmt unter JS nicht. (Deutsch unter JS??) ;).


ausblenden Quelltext
1:
2:
3:
var diesesObjectWirdThis = new FooObject();
function foo() { ... };
foo.call(diesesObjectWirdThis, arg1, arg2);


Verständlicher?

_________________
Klein, schwarz und ärgert Techniker? Jumper!
Heiko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3169
Erhaltene Danke: 11



BeitragVerfasst: Mo 18.06.07 18:32 
k, ja. Ich weiß nur noch nicht, auf welcher Art es mir etwas bringen soll (blt. ahbe ich auch nur ein Brett vorm Kopf... :( )