DIe Seite wird in Firefox/Opera/netscape immer neu geladen.

Salamahachy

Grünschnabel
Also ich hab ein Problem. Ich hab ne hompage mit javascript programmiert. Um FRames zu ersetzten, alss ich die einzelnen Formulare immer abwechselnd visible und hidden sein. nun soll bei nem klick auf nen button jedes formular ausgelesen werden, und in ein auswertungs formular geschrieben werden. Dies geschieht unter dem IE auch perfekt, doch unter den anderen leider überhaupt nicht.

Das is der Quellcode:
Code:
function show(aktivate) {
 if(document.getElementById)
 if (document.getElementById("a1").style.visibility == "visible") letzteseite = 1;
   document.getElementById("a1").style.visibility = "hidden";
 if (document.getElementById("a2").style.visibility == "visible") letzteseite = 2;
   document.getElementById("a2").style.visibility = "hidden";
 if (document.getElementById("a3").style.visibility == "visible") letzteseite = 3;
   document.getElementById("a3").style.visibility = "hidden";
 if (document.getElementById("a4").style.visibility == "visible") letzteseite = 4;
   document.getElementById("a4").style.visibility = "hidden";
 if (document.getElementById("a5").style.visibility == "visible") letzteseite = 5;
   document.getElementById("a5").style.visibility = "hidden";
 if (document.getElementById("a6").style.visibility == "visible") letzteseite = 6;
   document.getElementById("a6").style.visibility = "hidden";
 if (document.getElementById("a7").style.visibility == "visible") letzteseite = 7;
   document.getElementById("a7").style.visibility = "hidden";
 if (document.getElementById("a8").style.visibility == "visible") letzteseite = 8;
   document.getElementById("a8").style.visibility = "hidden";
   document.getElementById("aerg").style.visibility = "hidden"; 
 var idnum = "a" + aktivate;
   document.getElementById(idnum).style.visibility = "visible";
}
 

function analyse() {
 var teilergesamt = 0;
 amorphologie();
 aeinzugsgebiet();
 aoberflaechenwasser();
 atiefenwasser();
 awirbellose();
 asediment();
 awasserpflanzen();
 abelastung();
 if (morphologie != 0) teilergesamt = teilergesamt + 1;
 if (einzugsgebiet != 0) teilergesamt = teilergesamt + 1;
 if (oberflaechenwasser != 0) teilergesamt+=1;
 if (tiefenwasser != 0) teilergesamt+=1;
 if (wirbellose != 0) teilergesamt = teilergesamt + 1;
 if (sediment != 0) teilergesamt = teilergesamt + 1;
 if (wasserpflanzen != 0) teilergesamt = teilergesamt + 1;
 if (belastung != 0) teilergesamt = teilergesamt + 1;
 var alles = morphologie + einzugsgebiet + oberflaechenwasser + tiefenwasser + wirbellose + sediment + wasserpflanzen + belastung;
 switch (alles || teilergesamt) {
 case 0:
 gesamt = 0 ;
 break;
 default:
 gesamt = alles / teilergesamt;
 break;
 }
 if (gesamt > 0) ausrichtung = (gesamt-1)*120;
 else ausrichtung = 0;
 document.all["erga1"].innerText = morphologie.toFixed(2);
 document.all["erga2"].innerText = einzugsgebiet.toFixed(2);
 document.all["erga3"].innerText = oberflaechenwasser.toFixed(2);
 document.all["erga4"].innerText = tiefenwasser.toFixed(2);
 document.all["erga5"].innerText = wirbellose.toFixed(2);
 document.all["erga6"].innerText = sediment.toFixed(2);
 document.all["erga7"].innerText = wasserpflanzen.toFixed(2);
 document.all["erga8"].innerText = belastung.toFixed(2);
 document.all["ergerg"].innerText = gesamt.toFixed(2);
 if (gesamt != 0) {
  document.all["zeiger"].innerText = "I";
  document.getElementById("zeiger").style.marginLeft = ausrichtung;
  }
 else  document.all["zeiger"].innerText = "";
 show('erg');
 window.location.href=void(0);
 }

Es ist egal, ob Firefox oder Opera oder Netscape, jeder macht das Form was die auswertung sein soll, mit den ergbenissen, visible, läd danach die gesamte webside neu, dadurch sind dann allein schon getätigten eingaben flötten, und das ergebnis ist auch nur für 1-2 sekunden sichtbar.

Neben bei zeigt Firefox das ergbenis nicht mal an. da funktioniert das schreiben in die einzelnen ids nicht. hm. ich brauche hilfe.
 
  • Was bezweckst du mit
Code:
window.location.href=void(0);
:confused:
  • per document.all lassen sich Seitenelemente nur in IE und Opera ansprechen
  • die Eigenschaft innerText kennt nur der IE

Wenn die Sache in IE/Opera/Mozilla und Netscape(6+) funktionieren soll, schau dir mal das DOM an.... das ist der gemeinsame Nenner dieser Browser in Sachen JS.
 
DAnke schonmal mit dem Hinweis, was der Gemeinsame nenner is, werd ich morgen gleich mal umprogrammieren.

das windows.location.href="void(0)"; sollte ein trick sein, den ich im internet gelesen habe, damit natscape nicht zum nächsten ankerspringt und neuläd, aber nich, also überseht das.

Aber irgendwie laden die die siete immer wieder neu.

Hat zusätzlich noch jemand nen vorschlag, wie man per javascript zu nem anker gehen kann?
 
Salamahachy hat gesagt.:
Hat zusätzlich noch jemand nen vorschlag, wie man per javascript zu nem anker gehen kann?
z.B.
Code:
window.location.href='#ankername';
oder
Code:
document.getElementsByName('ankername')[0].scrollIntoView()
(Letzteres nur in IE und Mozilla)
 
Ich habe schon mal zu Danken. jetzt die Rechnung auch unter netscape und firefox.
nur besteht immer noch das problem, dass wenn ich auf den button klicke, um zu einem anker zu springen, oder wenn ich auf den auswerten button klicke (zu dem der quelltext oben gehört) dann läd er die seite sofort neu.

Der Eine Button ist:
Code:
<button id="daten" onClick="window.location.href='#navi'">Weitere<br>Daten Eingeben</button>
 

Neue Beiträge

Zurück