WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   JavaScript Seltsamer Fehler (http://www.wcm.at/forum/showthread.php?t=103479)

jak 23.07.2003 21:36

JavaScript Seltsamer Fehler
 
Siehe auch Attachment (wieder in.htm zurückbenennen).

Worum es geht: Eine JS Funktion sucht aus einer Tabelle eMail Adressaten heraus. Wenn allerdings irgendwo in der eMailadresse ein "on" vorkommt stolpert das Script. Ohne irgendeine Fehlermeldung hört es einnfach auf.
Wenn das "on" im Namen steckt gehts.
Im Attachment ist ein Beispiel, hier nur der code der funktion:
Code:

function adressaten()
{
var abk=document.forms[0];
abk.an.value="", abk.namen_an.value="";

for (var i = 1; i < abk.elements.length; i++)
 {
 var pos=abk.elements[i];
 if ( (pos.name.indexOf('an_')==0) && pos.checked && (abk.an.value.indexOf(pos.value)==-1))
  {
  if (abk.an.value == "")
  {
  abk.an.value = abk.elements[i-1].value;
  abk.namen_an.value = abk.elements[i-1].name;
  }
  else
  {
  abk.an.value = abk.an.value + ";" + abk.elements[i-1].value;
  abk.namen_an.value = abk.namen_an.value + "; " + abk.elements[i-1].name;
  }
  }
 }
}


Bin schon ziemlich verzweifelt
Jak

snowman 23.07.2003 22:05

also bei mir funkts. probier mal einen anderen browser.

gruss,
snowman

jak 24.07.2003 08:46

Auf IE 5.5 & 6.0 gehts nicht.
Und ich kann halt leider nicht allen Leuten sagen: Bei mir gehts, verwendets einen gscheiten Browser.
Welchen verwendest du?

Jak

snowman 24.07.2003 10:45

ich habs nicht genügend austestet gehabt und versteh den fehler jetzt erst richtig. funkt bei mir auch nicht.

gruss,
snowman

jak 24.07.2003 10:52

Das ist ja das tückische an der Sache.
Es schaut so aus als ob es funktionieren würde, es geht aber nicht. Wenn statt zwanzig Adressaten nur 15 da sind fällt es kaum auf.
Ich habe selber ziemlich lang gebraucht bis ich draufgekommen bin, das es am "on" liegt.
Wäre interessant ob es mit opera/mozilla oder sonstigen Browsern geht.

Jak

snowman 24.07.2003 12:43

in opera 6.01 und mozilla-firebird 0.6 gehts auch nicht.

gruss,
snowman

jak 28.07.2003 13:43

Also hat niemand eine Ahnung?
Nettes Detail am Rande: Wenn ich das ganze in ein Array schreibe gehts, mit einer Textarea auch. nur das <input> wehrt sich.
Naja, seltsamer Bug. Wenn wer weis worans liegen könnte bitte posten, sonst werd ichs halt anders lösen.

Jak

flinx 28.07.2003 15:20

Kenn mich nicht so gut aus, aber die Abfrage 'abk.an.value.indexOf(pos.value)==-1' scheint unkorrekt zu sein, da 'pos.value'=on ist. Nach dem ersten Eintrag mit 'on' ist indexOf nicht mehr -1. Wenn du die Bedingung entfernst, funktionierts.

jak 28.07.2003 15:40

Die Abfrage dient dazu doppelte Einträge zu vermeiden. Ich möchte sie daher eigentlich nicht entfernen (Es sei denn jemand kennt eine Alternative).
pos.value ist nicht nur on, sondern z.B. user@aon.at.
Ich verstehe zwar nicht ganz was du meinst, du dürftest aber recht haben. Bei meine Versuchen mit arrays und textareas habe ich auf diese Abfrage nämlich vergessen.

Nach dem ersten mal wo indexof<>-1 ist müsste das Script aber trotzdem weitermachen. Bei der nächsten Abfrage hätte es dann irgendeinen anderen Wert.

Jak

flinx 28.07.2003 15:44

Zitat:

pos.value ist nicht nur on, sondern z.B. user@aon.at
Wie gesagt, ich kenn mich nicht so gut aus, habs mir nur mit alert ausgeben lassen und es war immer nur 'on' kein anderer Wert.
Zitat:

indexof<>-1 ist müsste das Script aber trotzdem weitermachen.
Skript macht ja weiter, aber die if-Bedingung ist nicht mehr erfüllt, wenn pos.value den Wert 'on' hat und ein 'on' im String vorkommt.

jak 28.07.2003 16:09

Vielen Dank für deine Mühe. Es liegt wirklich am indexOf().

Zitat:

Original geschrieben von flinx

Wie gesagt, ich kenn mich nicht so gut aus, habs mir nur mit alert ausgeben lassen und es war immer nur 'on' kein anderer Wert.

Sehr seltsam. Irgendwie werde ich das Gefühl nicht los, das JS nach on irgendein ereigniss erwartet.

Zitat:


Skript macht ja weiter, aber die if-Bedingung ist nicht mehr erfüllt, wenn pos.value den Wert 'on' hat und ein 'on' im String vorkommt.

Das ganze ist schon sehr misteriös. Es ist nur so, das wenn ein on im String ist, in pos.value aber kein on (z.B. User A, B und D), es trotzdem zu dem Fehler kommt. Das Problem ist, das das skript imho nicht weiter macht. Der indexof wert müsste sich ja bei jedem Durchlauf ändern.

Jak

flinx 28.07.2003 16:37

Zitat:

das JS nach on irgendein ereigniss erwartet.
Nein, die for-Schleife wird abgearbeitet.
Zitat:

..in pos.value aber kein on (..
Da ist aber immer ein 'on' drinnen. So wie ich das sehe, ists ein Index-Fehler. Wenn du es mit
'(abk.an.value.indexOf(document.forms[0].elements[i-1].value)==-1)' statt '(abk.an.value.indexOf(pos.value)==-1)' machst, schauts so aus als obs funktionieren würde.

jak 28.07.2003 20:34

Autsch!:hammer:
Da ist mir wirklich ein Fehler unterlaufen. pos.value ist nämlich komplett uninteressant. Die wirklichen Daten, die verglichen werden sollen liegen in document.forms[0].elements[i-1].value. Vielen Dank!

:idee:
Jetzt ist mir auch klar wie es zu dem Fehler kommt: Wennn die Checkbox angewählt ist ist der value der checkbox "on", indexOf(on) daher <>-1!!!

Klare Unachtsamkeit meinerseits!
Ein großes :laola: an flinx für seine Hilfe (und ein kleines an snowman).

Jak
P.S.: Hab ich schon erwähnt das ich die neuen smileys (laola & motz) mag?


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag