document.write probleem

  • Onderwerp starter Onderwerp starter yeko
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

yeko

Gebruiker
Lid geworden
4 mrt 2008
Berichten
25
Beste

Ik ben een script aan het ontwerpen in php/javascript. Ik heb een functie in javascript die wat dingen berekenen en de uitkomst zou ik graag laten zien in html. Ik gebruik hiervoor document.write maar dit werkt niet. Als ik document.write gebruik geeft hij een lege pagina met alleen de document.write op de rest is dan verdwenen. Hoe komt dit ?

Dank bij voorbaat

Dit is mijn script.

Code:
<?php
session_start();
include('contactdb.php');
$redirect_pagina = "uitloggen.php";

function protect($value){
$value = mysql_real_escape_string($value);
$value = stripslashes($value);
$value = strip_tags($value);
}

$action = $_GET['actie'];
protect($action);

$user = $_SESSION['username'];
protect($user);


// Dit controleert of de users ingelogt is
if(!session_is_registered('username')){ 
  header('Location: ../index.php');
}	else{ 


$sql = "SELECT MinerG,MinerI,MinerC,score FROM `resources` WHERE `username`='$user'";
$res = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($res) or die(mysql_error());

$Goudminers = $row['MinerG'];
$Ironminers = $row['MinerI'];
$Coalminers = $row['MinerC'];
$totaal = $Goudminers + $Ironminers + $Coalminers;
?>

<html>
<head>
<title>Wardroid - Beta - Recources</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../opmaak/game.css">
<script type="text/javascript">
function bereken(resource) 
{
weergeven=(resource*250);
show(weergeven)
}
</script>
</head>
<body>
</body>

<table><tr><td>
<?php include("menu.php");?> 
</td>
        <td width="80%" valign="top"><p>
            <center>
            </center>
          </p>
          
<p>Here you can buy miners. </p>


<form name="koopminers" method="post" action ="">
<table width="70%">
<tr>
  <td>Gold miners</td>
  <td><input type="text" id='numbers' name="goud" onblur="bereken(document.koopminers.goud.value)"></td>
  <td>Cost:</td>
  <td>    
  <script type="text/javascript">
    function show(test) {
    document.write(test)
    }
  </script>
</td>
</tr>
<tr>
  <td>Iron miners</td>
  <td><input type="text" id='numbers' name="iron"></td>
  <td>Cost:</td>
  <td></td>
</tr>
<tr>
  <td>Coal miners</td>
  <td><input type="text" id='numbers' name="coal"></td>
  <td>Cost:</td>
  <td>
  </td>
</tr>
<tr>
  <td colspan="2">&nbsp;</td>
  <td>Totalcost : </td>
</tr>
<tr>
  <td colspan="4"><center><?php echo $fout; ?></center></td>
</tr>
<tr>
  <td colspan="4"><center><input type="submit" name="buy" onclick="bereken(document.koopminers.goud.value)" value="Buy miners"></center></td>
</tr>
</table>
</form>

          </td>
      </tr>
    </table></body>
</html>
<?php } ?>
 
dit komt doordat document.write statements die uitgevoerd worden nadat de pagina geladen is op een lege pagina geschreven worden. Je kunt namelijk niet buiten de <html> tags gaan schrijven.

Wat je kunt doen in een div of span neerzetten en element.innerHTML aanpassen, of met document.createElement("...") en element.appendChild(...) gaan werken.
 
Beste

Bedankt voor het snelle antwoord.
Zou je hiervan een voorbeeld of tutorial kunnen geven ?

Dank bij voorbaat
 
Het makkelijkste is dit:

je zet ergens waar je wilt dat de tekst vershijnt deze div neer:
Code:
<div id="fakeWriteDiv">
</div>

En deze funcite gebruik je in plaats van document.write:
Code:
function fakeWrite(text)
{
  if (!this.div)
    this.div = document.getElementById("fakeWriteDiv");
  if (!this.div)
    return;

  this.div.innerHTML .= text;  
}
 
Beste

Bedankt voor je reactie. Ik heb het geprobeerd maar er loopt iets vast in de functie.
Waar zit mij fout ?
Dank bij voorbaat.

Code:
<?php
session_start();
include('contactdb.php');
$redirect_pagina = "uitloggen.php";

function protect($value){
$value = mysql_real_escape_string($value);
$value = stripslashes($value);
$value = strip_tags($value);
}

$action = $_GET['actie'];
protect($action);

$user = $_SESSION['username'];
protect($user);


// Dit controleert of de users ingelogt is
if(!session_is_registered('username')){ 
  header('Location: ../index.php');
}	else{ 


$sql = "SELECT MinerG,MinerI,MinerC,score FROM `resources` WHERE `username`='$user'";
$res = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($res) or die(mysql_error());

$Goudminers = $row['MinerG'];
$Ironminers = $row['MinerI'];
$Coalminers = $row['MinerC'];
$totaal = $Goudminers + $Ironminers + $Coalminers;
?>

<html>
<head>
<title>Wardroid - Beta - Recources</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="../opmaak/game.css">

<script type="text/javascript">
function bereken(resource) 
{
weergeven=(resource*250);
fakeWrite(weergeven)
}

function fakeWrite(text)
{
  if (!this.div)
    this.div = document.getElementById("fakeWriteDiv");
  if (!this.div)
    return;

  this.div.innerHTML .= text;  
}
</script>
</head>
<body>
</body>

<table><tr><td>
<?php include("menu.php");?> 
</td>
        <td width="80%" valign="top"><p>
            <center>
            </center>
          </p>
          
<p>Here you can buy miners. </p>


<form name="koopminers" method="post" action ="">
<table width="70%">
<tr>
  <td>Gold miners</td>
  <td><input type="text" id='numbers' name="goud" onblur="bereken(document.koopminers.goud.value)"></td>
  <td>Cost:</td>
  <td>    
    <div id="fakeWriteDiv"></div>
  </td>
</tr>
<tr>
  <td>Iron miners</td>
  <td><input type="text" id='numbers' name="iron"></td>
  <td>Cost:</td>
  <td></td>
</tr>
<tr>
  <td>Coal miners</td>
  <td><input type="text" id='numbers' name="coal"></td>
  <td>Cost:</td>
  <td>
  </td>
</tr>
<tr>
  <td colspan="2">&nbsp;</td>
  <td>Totalcost : </td>
</tr>
<tr>
  <td colspan="4"><center><?php echo $fout; ?></center></td>
</tr>
<tr>
  <td colspan="4"><center><input type="submit" name="buy" onclick="bereken(document.koopminers.goud.value)" value="Buy miners"></center></td>
</tr>
</table>
</form>

          </td>
      </tr>
    </table></body>
</html>
<?php } ?>
 
Laatst bewerkt:
oeps, ik zat met php in mijn hoofd.

Deze regel:
Code:
 this.div.innerHTML .= text;

moet dit zijn:
Code:
 this.div.innerHTML += text;
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan