Zwei Funktionen
Bernhard.s
- javascript
0 Cheatah0 bernahrd.s0 Cheatah
0 Sven Rautenberg
Hallo zusammen,
ich habe folgendes Problem, beim ersten Aufruf meine Seite bekomme ich von PHP Werte, die ich später an JS übergebe, es ist die Zahl der Seiten die ich mit JS darsetell mit Hilfe von documen.write,
...
<td colspan="3" height="30" valign="top">
<script language=JavaScript>
<!--
var SeitenZahl = "<%=$seiten%>";
for(var i=1; i<=SeitenZahl; i++){
document.write("<input type='button' id='s_"+i+"' value='"+i+"' style='width=25;'");
document.write("OnClick="seiten_zahl("+i+")">\n");
}
//-->
</script>
</td>
...
den grade angeklickten Wert übergebe ich an ein Funktion "seiten_zahl":
...
var punkte_zahl = new Array( "10", "12", "4", "22");
var werte = 0;
function seiten_zahl(seite_nr){
for(var i=1; i<=punkte_zahl.length; i++){
if(i == seite_nr){
wert = punkte_zahl[(i-1)];
}
}
punkte_aufbau(wert);
}
...
in dieser Funktion wird ermittelt, welche "Seite" grade ausgewählt worden ist, danach wird der entsprechend Wert aus dem Array "punkte_zahl" geholt, also klickt der User den Punkt zwei wird aus dem Array "punkte_zahl" der Wert 12 ausgelesen und weite an die nächst Funktion "punkte_aufbau" übergeben:
...
function punkte_aufbau(wert_punkte){
for(var i=1; i<=wert_punkte; i++){
document.write("<input type='button' id='b_"+i+"' value='"+i+"' style='width=25;'");
document.write("OnClick="farbe("+i+")">\n");
}
}
...
Die Funktion "punkte_aufbau" soll jedes Mal so oft ablaufen wie hoch ist der Wert in der Variable "wert_punkte", so weit so gut.
Jetzt noch etwas zu dem Hintergrund, die beiden hier erwähnten Funktionen stehen vor dem body, im JS Bereich, der obere Tabelleabschnitt steht schon hinter dem body, beim laden der Seite wird die Funktion "seiten_zahl" aufgerufen:
...
<BODY OnLoad="seiten_zahl('1');">
...
Jetzt das Problem, beim ersten Aufruf der Seit wird der obere Tabellenabschnitt mit der Funktion "seiten_zahl" aufgerufen, der übergibt den ersten Wert aus dem Array "punkt_zahl" an die Funktion "punkte_aufbau" und die Funktion wird in der darunter liegende Tabelle aufgerufen:
<table>
<tr>
<td colspan="3" height="30" valign="top">
<script language=JavaScript>
<!--
var SeitenZahl = "<%=$seiten_anzeige%>";
for(var i=1; i<=SeitenZahl; i++){
document.write("<input type='button' id='s_"+i+"' value='"+i+"' style='width=25;'");
document.write("OnClick="seiten_zahl("+i+")">\n");
}
//-->
</script>
</td>
</tr>
<tr>
<td>
<script language=JavaScript>
<!--
punkte_aufbau();
//-->
</script>
</td>
...
aber die komplett Seite wird "vernichtet", der Quelltext im Browser sieht so aus:
<input type='button' id='b_1' value='1' style='width=25;'OnClick="button_farbe(1)">
<input type='button' id='b_2' value='2' style='width=25;'OnClick="button_farbe(2)">
<input type='button' id='b_3' value='3' style='width=25;'OnClick="button_farbe(3)">
<input type='button' id='b_4' value='4' style='width=25;'OnClick="button_farbe(4)">
<input type='button' id='b_5' value='5' style='width=25;'OnClick="button_farbe(5)">
<input type='button' id='b_6' value='6' style='width=25;'OnClick="button_farbe(6)">
<input type='button' id='b_7' value='7' style='width=25;'OnClick="button_farbe(7)">
<input type='button' id='b_8' value='8' style='width=25;'OnClick="button_farbe(8)">
<input type='button' id='b_9' value='9' style='width=25;'OnClick="button_farbe(9)">
<input type='button' id='b_10' value='10' style='width=25;'OnClick="button_farbe(10)">
das ist alle was der Browser bekommt!
Jetzt meine Frage weis jemand wie man das Problem lösen kann, dh. beim Aufruf der Funktion "punkte_aufbau" der restliche Quellcode erhalten bleibt, oder den "EndWert" für die for-Schleife an die richtige Stelle übergeben:
...
<table>
<tr>
<td colspan="3" height="30" valign="top">
<script language=JavaScript>
<!--
var SeitenZahl = "<%=$seiten_anzeige%>";
for(var i=1; i<=SeitenZahl; i++){
document.write("<input type='button' id='s_"+i+"' value='"+i+"' style='width=25;'");
document.write("OnClick="seiten_zahl("+i+")">\n");
}
//-->
</script>
</td>
</tr>
<tr>
<td>
<script language=JavaScript>
<!--
for(var i=1; i<=EndWwert; i++){
document.write("<input type='button' id='b_"+i+"' value='"+i+"' style='width=25;'");
document.write("OnClick="farbe("+i+")">\n");
}
//-->
</script>
</td>
...
als alternative, leider haben beide nicht funktioniert, hat jemand ein Vorschlag oder eine Idee wie man das lösen kann?
Danke im voraus.
Grüße Bernhard
Hi,
ich habe folgendes Problem, beim ersten Aufruf meine Seite bekomme ich von PHP Werte, die ich später an JS übergebe,
aus dem Archiv hättest Du erfahren, dass jedweder serverseitige Code für jedwedes clientseitige Problem vollkommen irrelevant ist und somit kein Grund existiert, dies hier:
var SeitenZahl = "<%=$seiten%>";
zu posten. Bitte beachte das in Zukunft.
<script language=JavaScript>
ERROR: Required attribute "type" missing.
aber die komplett Seite wird "vernichtet",
Das _muss_ beim Einsatz von document.write() passieren - wie Du ebenfalls aus dem Archiv hättest entnehmen können. Ebenso wie Alternativen.
<input type='button' id='b_1' value='1' style='width=25;'OnClick="button_farbe(1)">
Der CSS-Code ist bar jeder Richtigkeit. Zwei schwerwiegende Fehler auf so wenig Zeichen. Bitte füge zwischen den Parametern Leerzeichen ein.
Cheatah
Hi,
aus dem Archiv hättest Du erfahren, dass jedweder serverseitige Code für jedwedes clientseitige Problem vollkommen irrelevant ist und somit kein Grund
eistiert, dies hier:
var SeitenZahl = "<%=$seiten%>";
ja, stimmt nur das ist nicht das Problem, den die Variabel $seiten wird nur beim Aufruf der Seite an JS übergeben und das war's, das Problem liegt in der Darstellung von den verschiedenen "Punkten" aus dem Array "punkte_zahl" dh. hat der User die Nr. 2 gewählt sollen unten in der Tabelle 12 Button angezeigt werden. Weist Du wie man das lösen kann.
Tschuldige den Missverständnis für die Variabel $seiten sollte ich eigentlich 4 schreiben.
Bernhard
Hi,
aus dem Archiv hättest Du erfahren, dass jedweder serverseitige Code für jedwedes clientseitige Problem vollkommen irrelevant ist [...]
ja, stimmt nur das ist nicht das Problem,
korrekt, das habe ich aber auch nicht behauptet.
Cheatah
Hi,
Trotz dem danke für den Hinweis.
Bernhard
Moin!
ich habe folgendes Problem, beim ersten Aufruf meine Seite bekomme ich von PHP Werte, die ich später an JS übergebe, es ist die Zahl der Seiten die ich mit JS darsetell mit Hilfe von documen.write,
Das Vorhandensein von PHP macht eigentlich jegliches Javascript-document.write() überflüssig - sollte es zumindest. Das hat dann auch den Vorteil, dass du in einem wesentlich höherem Maße von eingeschaltetem Javascript unabhängig wirst.
Jetzt meine Frage weis jemand wie man das Problem lösen kann, dh. beim Aufruf der Funktion "punkte_aufbau" der restliche Quellcode erhalten bleibt, oder den "EndWert" für die for-Schleife an die richtige Stelle übergeben:
Wenn du in einem fertig geladenen Dokument nachträglich document.write() anwendest, wird das geladene Dokument vernichtet und durch das document.write() ersetzt.
Da ist es doch irgendwie schlauer, im Zweifel einfach eine neue, durch PHP dynamisch generierte Seite abzufordern, die die gewünschten Quelltexte enthält. Das funktioniert ohne Probleme bei jedem verwendeten Browser.
Als Alternative mußt du dich mit DOM und dessen Manipulation per Javascript vertraut machen - und stößt unweigerlich auf das Problem, dass einzelne Browser dieses mehr oder weniger gut können. Insbesondere wirst du ggf. Sonderbehandlungen für Netscape 4, IE4 und ältere Opera-Versionen vornehmen müssen. Da ist die Lösung mit PHP dann doch irgendwie einfacher.
- Sven Rautenberg