JavaScript Problem mit Firefox

  • Ab sofort steht euch hier im Forum die neue Add-on Verwaltung zur Verfügung – eine zentrale Plattform für alles rund um Erweiterungen und Add-ons für den DSM.

    Damit haben wir einen Ort, an dem Lösungen von Nutzern mit der Community geteilt werden können. Über die Team Funktion können Projekte auch gemeinsam gepflegt werden.

    Was die Add-on Verwaltung kann und wie es funktioniert findet Ihr hier

    Hier geht es zu den Add-ons

Status
Für weitere Antworten geschlossen.

HarryPotter

Benutzer
Registriert
24. Aug. 2007
Beiträge
2.156
Reaktionspunkte
0
Punkte
0
Vielleicht ist ein JavaScript Profi unter euch, sonst such ich mir ein entsprechendes Forum.

Habe folgenden Code in einer php Datei:

Code:
<script language="JavaScript">

function jsFormatieren(thisfield){
  if (thisfield.className == "clnichtausgewaehlt"){
    thisfield.className = "clausgewaehlt"
    document.frmspieleauswahl.elements[parseInt(thisfield.value)].value = 1
  }
  else {
    thisfield.className = "clnichtausgewaehlt"
    document.frmspieleauswahl.elements[parseInt(thisfield.value)].value = 0
  }
}

</script>

Macht eigentlich nichts als die Schriftfarbe beim klick auf ein Feld in der Tabelle zu ändern und den Wert des Feldes (ein Array) auf 0 oder -1 zu setzen.

Im Internet Explorer kein Problem.

Im FF und Safari klappt der Wechsel der Farbe, aber das Flag wird nicht gesetzt.

In der Fehlerkonsole steht folgendes:

Warnung: reference to undefined property document.frmspieleauswahl.elements[parseInt(thisfield.value)]
Quelldatei: http://blablabla

Fehler: document.frmspieleauswahl.elements[parseInt(thisfield.value)] is undefined
Quelldatei: http://blablabla

Weiss einer wie ich das ändern muss dass es alle Browser verstehen?

Das Tabellenfeld wird so erstellt:

Code:
<td value=$i class=clausgewaehlt onclick=jsFormatieren(this)>$elem<input type=hidden name=ausgewaehlt[] value=-1></td>
 
Zuletzt bearbeitet:
Ein wenig seltsam ist es schon, dem TAG <td> ein Value zuzuordnen. Das mag in ganz bestimmten XML-Namensräumen (oder eben bei M$) gehen, aber normal ist das nicht. Das TAG <input> hat üblicherweise ein Value ...

Itari
 
Meines Wissens müsstest du "value=$i" mit "id=$i" substituieren und selbiges auch in der JS Funktion. Dann sollte das gehen. Bin aber auch kein JS crack.

bye
dude
 
Gut getroffen, danke.

thisfield.value gibts für einen <td> Tag offenbar nicht. Also schon, aber nur für den IE. Grad mit "alert thisfield.value" getestet.


Aber ich muss den Tag identifizieren können mit einer Nummer von 0 bis x.

Wenn ich jetzt value=$i ersetze durch id=$i, wie lese ich das dann in JavaScript aus?
 
Meines Wissens müsstest du "value=$i" mit "id=$i" substituieren und selbiges auch in der JS Funktion. Dann sollte das gehen. Bin aber auch kein JS crack.

Hmm ... das stimmt zwar, aber ...

seien wir mal Softwareprogrammiererpsychologen und schauen uns an, welche typische Namens-Verwendung für integer-Variablen es gibt. Da ist führend die alte FORTRAN-Notation (leider über PASCAL weiter vererbt bis in unsere Zeiten): i, j, k ... Also das $i soll wohl mit einer Ganzzahl besetzt werden ;)

Das wiederum geht aber bei einem id-Attribut in einem HTML-Tag nicht, weil da die Regel ganz klar ist: Es muss mit einem Buchstaben anfangen (lassen wir die beiden anderen Sonderzeichen mal außer vor), auf keinen Fall darf das id-Attribut aus einer Zahl bestehen.

Also denke ich mir, entweder ist "Zahl"-Tag und das Ganze verrutscht oder es ist ein Hack, der noch nicht geht ;)

Itari
 
Gut getroffen, danke.

thisfield.value gibts für einen <td> Tag offenbar nicht. Also schon, aber nur für den IE. Grad mit "alert thisfield.value" getestet.


Aber ich muss den Tag identifizieren können mit einer Nummer von 0 bis x.

Wenn ich jetzt value=$i ersetze durch id=$i, wie lese ich das dann in JavaScript aus?

Mir war jetzt nicht bewusst, dass bei "id" nur strings erlaubt sind. Um das zu umgehen könnte man ein array anlegen in dem man Zahlen auf z.b. Buchstaben mappt und dann die Buchstaben als id nutzt. Identifizieren würde man das Tag dann per getElementById().

gruss
dude
 
Diese <td> Tags sind dynamisch durchnummeriert von 0 bis x ist ungefähr 400-500).

Ich muss dann in der Funktion jsFormatieren wissen, welche Nummer das angeklickte <td> hat, damit ich das Flag (0 oder -1) am richtigen Ort im Array $ausgewählt setze.

Da nützen mir keine Buchstaben und kein getElementByID weil ich die ID ja nicht weiss sondern eben auslesen muss.

Ist doch zum kotzen das sowas im IE läuft aber sonst nirgends.
 
So ich habs:

<td id=$1> funktioniert, auch wenn das nur Zahlen sind.

Auslesen in Javascript mit getAttribute('id'):

Code:
function jsFormatieren(thisfield){
  if (thisfield.className == "clnichtausgewaehlt"){
    thisfield.className = "clausgewaehlt"
    document.frmspieleauswahl.elements[parseInt(thisfield.getAttribute('id'))].value = -1
  }
  else {
    thisfield.className = "clnichtausgewaehlt"
    document.frmspieleauswahl.elements[parseInt(thisfield.getAttribute('id'))].value = 0
  }
}

Danke nochmals für den Hinweis mit dem value Attribut des <TD> Tags.
 
Es wäre ja auch kein Problem vor jede ID statisch immer den gleichen Buchstaben zu bappen oder?

id="a1"
id="a2"
...

gruss
dude
 
Was kümmerts mich - es geht so mit allen getesteten Browsern, das ist die Hauptsache.

Man kann ID auch durch TITLE ersetzen, funzt und man sieht die Nummer sogar wenn man mit der Maus über das Feld fährt.
 
Man kann ID auch durch TITLE ersetzen, funzt und man sieht die Nummer sogar wenn man mit der Maus über das Feld fährt.
afaik aber auch nicht in allen Browsern ;) Damit es mit allen Browsern klappt müsstest du noch das alt-Attribut setzen.

Gruss

tobi

p.s. @ HP Merci für's Päckli. Diä neui DS isch schon vill besser als mini alti DS107+. Min Webserver rännt jetzt richtig :)
Ischs Gäld scho acho?
 
p.s. @ HP Merci für's Päckli. Diä neui DS isch schon vill besser als mini alti DS107+. Min Webserver rännt jetzt richtig :)
Ischs Gäld scho acho?

Jo isch scho do, merci au. Chasch mer no d SerialNr schicke wenn d e Garantiebestätigung vo Synology willsch
 
Status
Für weitere Antworten geschlossen.
 

Kaffeautomat

Wenn du das Forum hilfreich findest oder uns unterstützen möchtest, dann gib uns doch einfach einen Kaffee aus.

Als Dankeschön schalten wir deinen Account werbefrei.

:coffee:

Hier gehts zum Kaffeeautomat