WinFuture-Forum.de: Javascriptproblem - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Javascriptproblem Links verstecken und Inputfeld sichtbar machen


#1 Mitglied ist offline   Junktyz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 138
  • Beigetreten: 10. Juni 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Stuttgart

geschrieben 18. November 2006 - 13:49

Hallo,

ich habe eine Javascript geschrieben, was bei einem Klick auf einen Link, diesen ausblendet und dafür ein input-Feld in einem Formular einblendet.
Das Problem ist jetzt, im Opera sieht das wunderbar aus, im Firefox blendet er zwar das Inputfeld ein, die Links bleiben aber trotzdem stehen und im IE geht es gar nicht, da meldet er "Scripterror on page".

Hier der Code:

function editiereHnr() {
	self.document.editieren.hnr.type = "input";
	self.document.editieren.hnr.focus();
	self.document.links['hnrLink'].text = "";
	self.document.editieren.edit.type = "submit";
}


So sieht der Code in der php-Datei aus, wo das Feld und der Link ist:

<input type="hidden" name="hnr" value="">
<a href="#" onClick="editiereHnr()" name="hnrLink">__</a>


Das Formular hat den Namen "editieren" und der Submitbutton "edit".

Kann mir jemand helfen und sagen, warums im FF nur schlecht und im IE garnet funktioniert?

Grüße Junktyz.

Dieser Beitrag wurde von Junktyz bearbeitet: 18. November 2006 - 14:01

0

Anzeige



#2 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 18. November 2006 - 14:58

Zitat

document.editieren

ist kein Objekt.

Zitat

function editiereHnr()

sollte eigentlich ein boolean zurückliefern, welcher darüber entscheidet, ob der Link trotz Eventhandler aufgerufen werden soll oder nicht.

Zitat

<a href="#"

Und welches Sinn soll das ergeben, daß du die Seite neulädst?
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#3 Mitglied ist offline   Junktyz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 138
  • Beigetreten: 10. Juni 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Stuttgart

geschrieben 18. November 2006 - 15:37

Beitrag anzeigenZitat (Rika: 18.11.2006, 14:58)

ist kein Objekt.

Vielen Dank. Sagt der IE mir auch. Du solltest Pädagoge werden.
Wie kann ich auf die Elemente als Objekt zugreifen?

Beitrag anzeigenZitat (Rika: 18.11.2006, 14:58)

Und welches Sinn soll das ergeben, daß du die Seite neulädst?

Lädt nicht neu.


Habs jetzt mal n bisschen ggeändert, jetzt gehts auch im FF. Im IE aber immer noch nicht.

<input type="input" name="hnr" value="" style="display:none;">
			<a href="#" onclick="editiereHnr()" name="hnrLink">____</a>


function editiereHnr() {
	document.getElementsByName("hnr")[0].style.display = "inline";
	document.getElementsByName("hnr")[0].focus();
	document.getElementsByName("edit")[0].style.display = "inline";
	document.getElementsByName("hnrLink")[0].style.display = "none";
	document.getElementsByName("hnrLink")[0].text = "";
}

0

#4 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 18. November 2006 - 20:45

Zitat

Wie kann ich auf die Elemente als Objekt zugreifen?

Wenn du diesen Satz ins Englische übersetzt, kriegst du es beinahe den Namen der Funktion heraus: getElementById

Du nutzt zwar zur Zeot getElementsByName, aber bedenke dass ein Name im Gegensatz zur Id mehr als einmal vorkommen kann, weshalb diese Funktion auch ein Array wiedergibt.
0

#5 Mitglied ist offline   Junktyz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 138
  • Beigetreten: 10. Juni 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Stuttgart

geschrieben 19. November 2006 - 03:09

Beitrag anzeigenZitat (Witi: 18.11.2006, 20:45)

Wenn du diesen Satz ins Englische übersetzt, kriegst du es beinahe den Namen der Funktion heraus: getElementById

Du nutzt zwar zur Zeot getElementsByName, aber bedenke dass ein Name im Gegensatz zur Id mehr als einmal vorkommen kann, weshalb diese Funktion auch ein Array wiedergibt.


Das hab ich dann irgendwann auch mal ausprobiert. Da krieg ich auch nur ein Element (oder Objekt, keine Ahnung was) zurück. Aber funktioniert hats dann dann auch nicht.
Aber jetzt funktioniert es auch im IE. Ich benutz immer noch getElementsByName(..), aber was ich nicht beachtet habe ist, dass der IE bei der Angabe
<script language="JavaScript" type="text/javascript" src="....

das Script als JavaScript1.0 interpretiert. Ich muss explizit JavaScript1.2 angeben, damit ich auf die Attribute von Links und Form-Elementen zugreifen kann.
Also jetzt funktioniert es.
Trotzdem danke für die Hilfe.
0

#6 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 19. November 2006 - 11:38

Zitat

Lädt nicht neu.


"#" einfahc so lädt die Seite neu bzw. rendert sie neu. bzw. scrollt zum Anfang. Was soll der Mist? Warum nimmst du nicht einfach "java script:editiereHnr()", oder am besten gleich einen ganz normalen Link für Leute, die kein JavaScript aktiviert haben?

Bei "#" weiß doch keiner, was der Link soll.

Zitat

das Script als JavaScript1.0 interpretiert. Ich muss explizit JavaScript1.2 angeben, damit ich auf die Attribute von Links und Form-Elementen zugreifen kann.

Selber schuld, es gibt nämlich gar kein language-Attribut.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

#7 Mitglied ist offline   Junktyz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 138
  • Beigetreten: 10. Juni 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Stuttgart

geschrieben 19. November 2006 - 11:51

Beitrag anzeigenZitat (Rika: 19.11.2006, 11:38)

"#" einfahc so lädt die Seite neu bzw. rendert sie neu. bzw. scrollt zum Anfang.

Das letzte ist richtig. Und das vorletzte vielleicht auch noch, das weiß ich grad nicht. Und ich habs jetzt rausgenommen.

Beitrag anzeigenZitat (Rika: 19.11.2006, 11:38)

Was soll der Mist? Warum nimmst du nicht einfach "java script:editiereHnr()", oder am besten gleich einen ganz normalen Link für Leute, die kein JavaScript aktiviert haben?

Weil es nach was aussehen soll und wir im Jahre 2006 leben. Aber gleich im href-Attribut den Javacode reinschreiben ist ne gute Idee.
Und dass Leute Javascript aktiviert haben, davon sollte man ausgehen. Zumindest ist das bei 99% der Leute der Fall. Um die anderen kann ich mich kümmern, wenns für die mehrheit läuft.

Beitrag anzeigenZitat (Rika: 19.11.2006, 11:38)

Selber schuld, es gibt nämlich gar kein language-Attribut.

Jetzt geht's ja.
0

#8 Mitglied ist offline   Witi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 5.942
  • Beigetreten: 13. Dezember 04
  • Reputation: 43
  • Geschlecht:Männlich
  • Wohnort:Kingsvillage
  • Interessen:Frickeln

geschrieben 19. November 2006 - 11:58

Zitat

und wir im Jahre 2006 leben

Zitat

Und dass Leute javascript aktiviert haben, davon sollte man ausgehen. Zumindest ist das bei 99% der Leute der Fall.

[OT]
Seit dem Jahr 2006 (wahrscheinlich noch früher) surfen immer mehr Leute aus Sicherheitsgründen mit bspw. NoScript. Die Anzahl der Leute die javascript ausgeschaltet hat steigt aus gutem Grund.

Und davon sollte man _nicht_ ausgehen. Es ist die Aufgabe eines Webdesigners zu überprüfen, ob ein Client javascript aktiviert hat.
Also...mach ein noscript-Tag rein und fertig.

Und was javascript mit 2006 bzw modern zu tun hat, wird mir immer noch nicht klar.[/OT]
0

#9 Mitglied ist offline   Rika 

  • Gruppe: aktive Mitglieder
  • Beiträge: 11.533
  • Beigetreten: 11. Juni 03
  • Reputation: 2
  • Geschlecht:Männlich

geschrieben 19. November 2006 - 12:37

Zitat

Weil es nach was aussehen soll und wir im Jahre 2006 leben.

Jo, und im Jahre 2006 will man, daß die Dinge funktionieren und nicht irgendwo blöde aussehen. Leute wollen in der Statusleiste sehen, wohin ein Link führt, und fühlen sich bei einem "#" irgendwie verarscht.
Konnichiwa. Manga wo shitte masu ka? Iie? Gomenne, sonoyouna koto ga tabitabi arimasu. Mangaka ojousan nihongo doujinshi desu wa 'Clamp X', 'Ayashi no Ceres', 'Card Captor Sakura', 'Tsubasa', 'Chobits', 'Sakura Taisen', 'Inuyasha' wo 'Ah! Megamisama'. Hai, mangaka gozaimashita desu ni yuujin yori.
Eingefügtes Bild
Ja, mata ne!

(For sending email please use OpenPGP encryption and signing. KeyID: 0xA0E28D18)
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0