EKKi: Beschreiben ist eine Kunst

Beitrag lesen

Mahlzeit Nick,

Ich habe mehrere Male Beispiele gebracht wie ich es verwenden würde, oder näher nachgefragt, wie genau denn der Rat umzusetzen sei.

Inwiefern kommt das einem einfachen "funzt net" gleich?

Ganz einfach: "funzt net" ist keine Problembeschreibung. Genauso wenig ist das einfache Kopieren und Einfügen von Code eine Problem-*BESCHREIBUNG*. Keiner der hier anwesenden Leser kann wissen, *was genau* bei Dir passiert - wenn Du das nicht beschreibst. In dem Code kann man höchstens fehlerhafte Anweisungen erkennen oder evtl. erraten, wo ein Fehler auftreten *könnte* ... man kann aber nicht wissen, was Du bezweckst.

Das Problem wurde beschrieben: die Mauszeigerposition wird nicht erkannt.

Das ist Dein gefühltes Problem, richtig. Letztendlich ist das aber vermutlich nur die Auswirkung irgendeines Fehlers, der im Verlauf Deines Programmcodes passiert. Und solange Du nicht in der Lage bist, diesen vernünftig zu überprüfen, wird sich daran auch nichts ändern.

Und dann wird mir auf einmal von irgendeinem Kerl doch tatsächlich als Antwort gegeben "es funktioniert, wenn du es richtig machst".

Danke für den "irgendeinen Kerl". Die Aussage ist aber korrekt. Und insbesondere habe ich sie genau so formuliert, da Dein Code zu dem Zeitpunkt vor Fehlern nur so strotzte.

Offenbar fehlt Dir wirklich ganz erhebliches Grundlagenwissen. Dieses musst Du Dir *selbst* aneignen - Links dazu wurden genannt. Es ist absolut nicht sinnvoll, ohne ein entsprechendes Grundverständnis einfach irgendwelchen (Beispiel-)Code aus verschiedenen Quellen miteinander zu kombinieren und dann zu hoffen, dass er schon irgendwie wie gewünscht funktionieren wird. Mir ist kein Browser bekannt, der über eine Javascript-Engine mit Brain-Interface verfügt - Du musst also schon richtigen und fehlerfreien Code schreiben, damit der Browser weiß, was er machen soll.

Wenn ich es denn nicht richtig mache, kann man mir denn nicht einfach Lösungsvorschläge geben, die auf meinen Code zugeschnitten sind?

Wie sollte man das tun, wenn die Ursache des Fehlers überhaupt noch nicht klar ist? AFAIK habe ich Dich auf verschiedene Dinge hingewiesen, die Ursache des Fehlers sein *könnten*. Da Du aber kein vernünftiges Debugging betreibst (bzw. Du uns über entsprechende Ergebnisse und Erkenntnisse im Unklaren lässt), ist es müßig, darüber zu spekulieren, wo genau der Fehler denn nun liegen *könnte*.

Ich hatte sogar ausdrücklich danach gefragt, ob nicht der Event-Handler mit übergeben werden kann, während man andere Variablen mit überträgt, und dies alles in dem Tag des Elementes selbst gestartet wird.

Jein. Bei ersterem handelt es sich um ein Event-Objekt, aber man kann selbstverständlich zusätzlich zu diesem weitere Variablen mit übergeben. Das Event-Objekt muss dabei allerdings *IMMER* der erste Parameter sein.

Was soll ich denn mehr an dem Problem beschreiben als: "ich will die Mauszeigerposition auch in Firefox bekommen. Der hier dargestellte Code lässt dies nur in den anderen Browser zu. Wie kann es für den Firefox umgebaut werden, sodass aber weiter die Form des Codes vorhanden bleibt?"

Das ist aber nicht das Problem. Das Problem ist, dass Dein Code, so wie er bisher war/ist, schlicht und ergreifend fehlerhaft ist. Zuerst solltest Du deshalb alle diese Fehler beheben. Dabei ist eine zielführende, vernünftige Fehlersuche das allererste Mittel der Wahl. Erst wenn der Code an sich absolut fehlerfrei ist, dann ist es sinnvoll, irgendwelche Sonderlocken für irgendwelche Browser einzubauen.

Was ist denn DARAN bitteschön nur ein "funzt net" ? ? ? ?

Ganz einfach: es fehlt eine hilfreiche und detaillierte Problembeschreibung. Du beschreibst nur die Auswirkung. Auf die Fehlersuche hast Du Dich bisher jedoch offenbar noch nicht gemacht - stattdessen erwartest Du von Deinen Lesern, dass sie hellsehen und alle Fehler, die Dein Code *bei Dir* verursachen könnte, im Voraus erkennen.

Und wenn ich dann ein umgebautes Script zeigte, wurde mir nur gesagt, dass es falsch sei. Na dankeschön!

Fang doch endlich mal an, vorhandene Fehler zu identifizieren und zu beheben, anstatt einfach nur verschiedene Code-Fragmente auszuprobieren und unkontrolliert daran herumzuändern (ohne zu wissen, was Du eigentlich tust).

Wenn ihr doch die Probleme lösen könnt, sofern man alles in kleinste Detail beschreibt, dann will ich das mal hier sehen:

Das ist keine Problembeschreibung, das ist der (immer noch fehlerhafte) Code. Was genau ist Dein Problem, dass Du das Wort "Problembeschreibung" offenbar nicht verstehst?

  var Element = event.target.id || event.srcElement.id  

Es ist - abgesehen von den von ChrisB beschriebenen Problemen dieser Zeile - IMHO *immer* sinnvoller, sich das den Event auslösende Element in einer Variablen zu merken ... und nicht nur seine ID. Dann hast Du nämlich immer alle seine Eigenschaft zur Hand, und musst nicht ständig mit getElementById() herumhühnern. Schreibe also lieber (wie von mir vorgeschlagen):

var Element = event.target || event.srcElement;

  mausX = event.clientX - document.getElementById(Element).offsetLeft  

Dann kannst Du hier nämlich viel einfacher auf die gewünschte Eigenschaft zugreifen:

mausX = event.clientX - Element.offsetLeft;  
Element.style.zIndex = 2;  
Element.onmousemove = function() { move(event) };  

  document.getElementById(Element).style.top = event.clientY - mausY  

Wie bereits von MudGuard erwähnt, ist diese Anweisung fehlerhaft, da die CSS-Eigenschaft http://de.selfhtml.org/css/eigenschaften/positionierung.htm#postop@title=top eine korrekte <http://de.selfhtml.org/css/formate/wertzuweisung.htm#numerische@title=numerische Angabe> erwartet. Eine einfache Zahl ist jedoch *keine*.

Warum ignorierst Du eigentlich die Dir gegeben Hinweise so penetrant?

Problem, welches jetzt aber aufkommt ist, dass sich das Feld nicht bewegt.

Du hast in den vorherigen Zeilen sehr schön heruntergebetet, was der Code machen sollte. Das ist absolut unnötig, da Deine Leser das genauso gut erkennen können wie Du. Viel wichtiger ist, *ob* der Code das auch *tatsächlich* macht! Das kannst aber *nur DU* sagen - und zwar, indem Du jetzt endlich mal anfängst, sinnvolles Debugging zu betreiben! Das *kann* Dir keiner abnehmen. Überprüfe also, ob Deine Code-Zeilen auch das tun, was sie sollen ... und zwar, indem Du Dir *NACH JEDER EINZELNEN VERDAMMTEN ANWEISUNG* mit geeigneten Mitteln (die ich Dir genannt habe) ausgeben lässt, ob die Anweisung erfolgreich abgeschlosen wurde. Zusätzlich solltest Du *ENDLICH MAL DIE FEHLERKONSOLE BEACHTEN*!

Wie tief soll man denn ein Problem beschreiben?

So tief es geht. Du kratzt immer noch an der Oberfläche. Ganz einfach, weil Du nicht zwischen "Problem" und "Fehler" sowie "Auswirkung" und "Ursache" unterscheiden kannst oder willst.

Soll man sein Script bis ins kleinste Detail beschreiben, oder wie?! Ich dachte sowas wäre, zumindest bei dem einfachen Zeugs was ich da geschrieben habe, sofort erkenntlich!

Du sollst nicht Dein Skript beschreiben (weil das, wie Du ja selbst erkannt hast, nicht sooo komplex ist und eigentlich selbsterklärend sein sollte), sondern Du sollst Dein Problem beschreiben. Dazu solltest Du alle erreichbaren Möglichkeiten nutzen - insbesondere die Fehlerkonsole eines vernünftigen Browsers nicht ignorieren und die drei goldenen Schritte der Fehlerursachenforschung betreiben: Kontrollausgaben, Kontrollausgaben und Kontrollausgaben.

Könnt ihr mir JETZT helfen?

Das tun wir die ganze Zeit - nur willst Du unsere Hilfe bisher offenbar nicht annehmen ...

MfG,
EKKi

--
sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|