Toon posts:

[MSHTML/PHP] innerhtml geeft undefined terug?

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit nu al een paar avondjes met het volgende probleem te prutsen:
Ik ben (zoals veel anderen voor mij) een onlijn WYSIWYG editortje aan het bouwen, het probleem komt echter bij het opslaan...

Ik heb dit al op allerlei verschillende manieren geprobeert, ben nu (met dank aan de Search) al aardig ver, maar ik heb nog één probleem:

Als ik een div heb die contenteditable is:

code:
1
2
3
<div id="foo" contenteditable align="left"
style="height:300; width:100%;background-color:white; font-face:Arial; padding:3;
border:1px solid black; overflow=auto;">


en de inhoud van dit ding wil opslaan met:

PHP:
1
2
3
4
echo "<img name=\"saveimg\" src=\"buttons/button_save.gif\"
unselectable=\"on\" onClick=\'save();\'
onmouseover=\"document.saveimg.src='buttons/button_save_selected.gif'\"
onmouseout=\"document.saveimg.src='buttons/button_save.gif'\">\n";


en:

code:
1
2
3
4
function save()
{
    document.form1.submit();        
}


en

PHP:
1
2
3
4
5
6
echo "<form name=\"form1\" method=\"POST\" action=\"editor.php?
ART_ID=$ART_ID\" onsubmit=\"this.ART_TXT.value=foo.innerhtml\">";
echo "<input type=\"hidden\" value=\"peopi\" name=\"ART_TXT\"> ";
echo "<input type=\"hidden\" value=\"$ART_ID\" name=\"ART_ID\">"; 
echo "<input type=\"submit\" value=\"added\" name=\"added\">"; 
echo "</form>";


als ik dan de waarde opvraag via 'de' postvariabele ART_TXT in php ,
dan krijg ik de waarde undefined te zien....

Wanneer ik echter in plaats van "foo.innerhtml" gewoon een vaste waarde (zoals "kapstok") in de "onsubmit" plaats, dan krijg ik wel gewoon "kapstok" terug...

Nu doe ik dus waarschijnlijk iets fout met het aanroepen van de innerhtml van de div, maar in de microsoft mshtml tut staat toch dat het zo zou moeten kunnen... .

Dus nu de grote vraag, hoe kan dit, en hoe kan ik dit oplossen?

(ik hoop dat de code enigzins leesbaar is, maar ik heb het een beetje opgevouwen om hier de lay out niet te verknooien... B))

Verwijderd

innerhtml moet innerHtml zijn volgens mij.

en je kunt ook beter
code:
1
document.getElementById('foo').innerHtml
gebruiken
ik ben er niet zeker van of de DOM het zo altijd snapt zoals jij em hebt.

[ Voor 174% gewijzigd door Verwijderd op 17-11-2003 22:12 ]


Verwijderd

Topicstarter
Verwijderd schreef op 17 november 2003 @ 22:08:
innerhtml moet innerHtml zijn volgens mij.

en je kunt ook beter
code:
1
document.getElementById('foo').innerHtml
gebruiken
ik ben er niet zeker van of de DOM het zo altijd snapt zoals jij em hebt.
Heb net even geprobeerd,
code:
1
document.getElementById('foo').innerHtml

en
code:
1
foo.innerHtml

Maar werkt helaas beide niet.... ik snap er niks meer van..

edit:
heb overigens ook even een andere div (uit de msdn mshtml tut) aangemaakt, en daarmee geprobeerd, maar die gaf ook undefined terug...

[ Voor 17% gewijzigd door Verwijderd op 17-11-2003 22:27 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

als je met javascript je form submit wordt de onsubmit event handler in je form tag niet uitgevoerd. Dat stukje zal je dus moeten toevoegen aan je save() functie.

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op 17 november 2003 @ 22:26:
als je met javascript je form submit wordt de onsubmit event handler in je form tag niet uitgevoerd. Dat stukje zal je dus moeten toevoegen aan je save() functie.
code:
1
2
3
4
5
6
function save()
{
  //form1.ART_TXT.value=document.getElementById('foo').innerHtml;
  form1.ART_TXT.value="ffddf";
  document.form1.submit();      
}

hiermee blijft de ingestelde value in ART_TXT onveranderd, (niet meer undefined dus...)

(ik heb overigens ook al geprobeerd om het form in javascript te maken, dit ging wel goed, maar daarbij verknooide hij tekens als   e.d. (deze veranderde hij in een  ? )

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

oh ja, het is innerHTML (mind the caps)

voorbeeldje:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<html>
<head>
<title>testje</title>
<script type="text/javascript">

function save() {

  document.forms['myform'].elements['data'].value = document.getElementById('mydiv').innerHTML;
  document.forms['myform'].submit();

}

</script>
</head>
<body>
<?php

if ($_SERVER['REQUEST_METHOD'] == 'POST') {

  echo 'resultaat:<br /><textarea style="width:300px;height:100px">'.htmlspecialchars($_POST['data']).'</textarea><br /><br />';

}

?>
<form id="myform" method="post" action="bla.php">
<input type="hidden" name="data" />
<input type="button" value="save" onclick="save()" />
</form>
<div id="mydiv">
<span style="color: red">een beetje tekst</span><br />
<span style="color: blue">nog een beetje tekst</span>
</div>
</body>
</html>

Intentionally left blank


Verwijderd

Topicstarter
Wow! :D Errrug uitgebreid voorbeeld, hiermee kom ik er zeker wel uit.. (heb em al stiekem geprobeerd, en dit verduidelijkt een hoop...

(misschien moet ik is leren me code wat netter te schrijven... )

Enorm bedankt voor dit Crisp :D
offtopic:
btw. Als ik jou vorige bericht quote, dan maakt react er een zootje van :) bug?

[ Voor 5% gewijzigd door Verwijderd op 17-11-2003 23:18 ]


  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 17 november 2003 @ 23:16:
Wow! :D Errrug uitgebreid voorbeeld, hiermee kom ik er zeker wel uit.. (heb em al stiekem geprobeerd, en dit verduidelijkt een hoop...

(misschien moet ik is leren me code wat netter te schrijven... )

Enorm bedankt voor dit Crisp :D
offtopic:
btw. Als ik jou vorige bericht quote, dan maakt react er een zootje van :) bug?
graag gedaan; trouwens dat React over de n**k gaat is omdat er een </textarea> in de code zit; ik probeer chem al maanden aan het verstand te peuteren dat alles wat je in een textarea of input veld terug gooit, je eerst htmlspecialchars overheen moet halen :o

Intentionally left blank


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 12:02

.oisyn

Moderator Devschuur®

Demotivational Speaker

PW -> WG

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

crisp schreef op 17 november 2003 @ 22:26:
als je met javascript je form submit wordt de onsubmit event handler in je form tag niet uitgevoerd. Dat stukje zal je dus moeten toevoegen aan je save() functie.
Dit is niet waar... wordt wel uitgevoerd
Wanneer ik echter in plaats van "foo.innerhtml" gewoon een vaste waarde (zoals "kapstok") in de "onsubmit" plaats, dan krijg ik wel gewoon "kapstok" terug...
En ik heb zelf ook wel met onsubmit gewerkt en met javascript gesubmit

Het kan ook zijn dat ik me gruwelijk vergis en dit echt alleen werkt in het fijne IE
in that case... : i'm sorry, mijn excuses

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Verwijderd schreef op 18 november 2003 @ 11:18:
[...]
Dit is niet waar... wordt wel uitgevoerd
[...]
En ik heb zelf ook wel met onsubmit gewerkt en met javascript gesubmit

Het kan ook zijn dat ik me gruwelijk vergis en dit echt alleen werkt in het fijne IE
in that case... : i'm sorry, mijn excuses
test it yourself:
HTML:
1
2
3
4
5
6
7
8
9
10
11
<html>
<head>
<title>test</title>
<body>
<form method="get" action="bla.html" onsubmit="alert('boeh!')">
<input type="hidden" value="bar" name="foo" />
<input type="submit" value="echte submit" />
<input type="button" value="javascript submit" onclick="this.form.submit()" />
</form>
</body>
</html>


hier in IE5.5 krijg ik met de javascript submit geen alert

Intentionally left blank


Verwijderd

sjees... ik moet toegeven.. je hebt gelijk.

Ik moet nu toch echt weten hoe ik dat eerst gedaan heb :)
ik denk dus dan niet zoals hier..
getest in IE6 en het werkt ook niet
*schaam*
Pagina: 1