[JavaScript] Script von begin an ausführen.

asseskiller

Lt. Junior Grade
Registriert
Sep. 2005
Beiträge
447
Hi ich habe folgendes script

HTML:
function show_pic(element)
{
  switch(element.value)
  {
  	<? for($i=1;$i<=$_SESSION["anz_handy"];$i++)
	{
	?>
    case "<? echo "wert".$i."";?>":
        document.getElementById("1").setAttribute("src", "<? echo $_POST['bild'.$i.'']; ?>");
		document.getElementById("details").innerHTML = "<? echo $_POST['beschreibung'.$i.'']; ?>";
    	document.getElementById("erg1").innerHTML = "<? echo $_POST['handy2'.$i.'']; ?> ";
		document.getElementById("ek").innerHTML = "<? echo $_POST['ek'.$i.'']; ?>";
		var ek = document.getElementById("ek").innerHTML;
		var prov = document.getElementById("prov").innerHTML;
		var preis_ausgeben = Math.round((ek-prov+<? echo $marge; ?>)*1.19);
		document.getElementById("preis").innerHTML = preis_ausgeben;
	break;
    <?
	}
	?>
  }

}
function show_pic2(element)
{
  switch(element.value)
  {
    	<? for($i=1;$i<=$_SESSION["anz_tarif"];$i++)
	{
	?>
    case "<? echo "wert".$i."";?>":
        document.getElementById("2").setAttribute("src", "<? echo $_POST['tbild'.$i.'']; ?>");
		document.getElementById("erg2").innerHTML = "+ <? echo $_POST['tarif2'.$i.'']; ?>";
		document.getElementById("prov").innerHTML = "<? echo $_POST['prov'.$i.'']; ?>";
		var ek = document.getElementById("ek").innerHTML;
		var prov = document.getElementById("prov").innerHTML;
		var preis_ausgeben = Math.round((ek-prov+<? echo $marge; ?>)*1.19);
		document.getElementById("preis").innerHTML = preis_ausgeben;
    break;
   <?
   }
   ?>
  }

}

Das script erstellt außerdem an anderer stelle noch formulare.
In diesen Formularen sind radiobuttons bei denen der erste automatisch gecheckt ist.
Mein script ist aber so angelegt, dass es erst rechnet, sobald man was neues anklickt.
Ich würde es gerne so haben, das ich sich gleich zu begin die entsprechenden daten aus den feldern zieht und dann sofort rechnet.

Wie kann ich das anstellen?
 
Hier habs jetzt ma so probiert aber das punt net wie ich das will, eigentlich funzt es garnicht.

HTML:
<script language="javascript" type="text/javascript">

		var ek = <? echo $_POST['ek1'];?>;
		var prov = <? echo $_POST['prov1'];?>;
		var marge = <? echo $marge; ?>
		var preis_ausgeben = Math.round((ek-prov+marge;)*1.19);
		document.getElementById("preis").innerHTML = preis_ausgeben;
		alert(preis_ausgeben);

function show_pic(element)
{
  switch(element.value)
  {
  	<? for($i=1;$i<=$_SESSION["anz_handy"];$i++)
	{
	?>
    case "<? echo "wert".$i."";?>":
        document.getElementById("1").setAttribute("src", "<? echo $_POST['bild'.$i.'']; ?>");
		document.getElementById("details").innerHTML = "<? echo $_POST['beschreibung'.$i.'']; ?>";
    	document.getElementById("erg1").innerHTML = "<? echo $_POST['handy2'.$i.'']; ?> ";
		document.getElementById("ek").innerHTML = "<? echo $_POST['ek'.$i.'']; ?>";
		var ek = document.getElementById("ek").innerHTML;
		var prov = document.getElementById("prov").innerHTML;
		var preis_ausgeben = Math.round((ek-prov+<? echo $marge; ?>)*1.19);
		document.getElementById("preis").innerHTML = preis_ausgeben;
	break;
    <?
	}
	?>
  }

}
function show_pic2(element)
{
  switch(element.value)
  {
    	<? for($i=1;$i<=$_SESSION["anz_tarif"];$i++)
	{
	?>
    case "<? echo "wert".$i."";?>":
        document.getElementById("2").setAttribute("src", "<? echo $_POST['tbild'.$i.'']; ?>");
		document.getElementById("erg2").innerHTML = "+ <? echo $_POST['tarif2'.$i.'']; ?>";
		document.getElementById("prov").innerHTML = "<? echo $_POST['prov'.$i.'']; ?>";
		var ek = document.getElementById("ek").innerHTML;
		var prov = document.getElementById("prov").innerHTML;
		var preis_ausgeben = Math.round((ek-prov+<? echo $marge; ?>)*1.19);
		document.getElementById("preis").innerHTML = preis_ausgeben;
    break;
   <?
   }
   ?>
  }

}
</script>
 
Hi,

man könnte den entsprechenden Funktionsaufruf im onload-Attribut des body-Elements machen oder aber kurz vorm Ende des Codes einen script-Bereich öffnen und die Funktion darin aufrufen.
Ich glaube, die letztere Variante ist die bessere, da das onload noch vor Beendigung des Ladevorgangs auslösen kann (IMHO). Beim Aufruf am Ende der Seite ist fast garantiert, dass alles bereits geladen ist und keine Fehler auftreten. Zur Sicherheit kann man den Funktionsaufruf noch mit Settimeout() verzögern (z.B. 250ms).

MfG, Gobble-G
 
Das onload attribut des body Elements wird erst nach dem rstellen des kompletten DOM-Trees aufgerufen. Somit ist zu dem Zeitpunkt bereits alles geladen.

So long
der_guru
 
Zurück
Oben