login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Arrays doen moeilijk

Offline Rens - 30/10/2005 21:08 (laatste wijziging 30/10/2005 21:12)
Avatar van RensGouden medaille

Crew algemeen
Voor mijn site ben ik nu bezig met het onclick gebeuren van de ubb.
Ik ben nog niet zo lang met javascript bezig, en zit met het volgende:

Ik heb een array waarin gegevens staan over de ubb codes (b, u, i en code).
Die ziet er als volgt uit:
  1. t = new Array();
  2. t['b'] = new Array();
  3. t['b']['status'] = "dicht";
  4. t['b']['open'] = "[b]";
  5. t['b']['dicht'] = "[/b]";
  6.  
  7. t['u'] = new Array();
  8. t['u']['status'] = "dicht";
  9. t['u']['open'] = "[u]";
  10. t['u']['dicht'] = "[/u]";
  11.  
  12. t['i'] = new Array();
  13. t['i']['status'] = "dicht";
  14. t['i']['open'] = "[i]";
  15. t['i']['dicht'] = "[/i]";
  16.  
  17. t['code'] = new Array();
  18. t['code']['status'] = "dicht";
  19. t['code']['open'] = "[ code]";
  20. t['code']['dicht'] = "[ /code]";";
  21. // die 2 spaties ^
  22. // horen er eigenlijk niet bij, maar anders doet het code gedoe moeilijk


Nu heb ik een functie voor die 4 ubb codes:
  1. function opmaak(item, field, form)
  2. {
  3. if(t[item]['status'] == "dicht")
  4. {
  5. tag = t[item]['open'];
  6. t[item]['status'] = "open";
  7. } else
  8. {
  9. tag = t[item]['dicht'];
  10. t[item]['status'] = "dicht";
  11. }
  12. document.forms[form].field[field].value+=tag+" ";
  13. }


Maar nu het probleem:
Hij voegt geen waardes toe.
Ik gok dat het komt omdat ik een array gebruik die buiten de functie aangemaakt word.
Maar zoals ik al zei, ik ben nog niet zo lang bezig met javascript en weet het dus niet...
Kan iemand me vertellen waarom het niet werkt?

6 antwoorden

Gesponsorde links
Offline tomk - 31/10/2005 07:41
Avatar van tomk ASP interesse ubb.inc.php
  1. <?
  2. $bericht = htmlspecialchars($bericht);
  3. $bericht = str_replace("\n","<br>",$bericht);
  4.  
  5. //smilies
  6.  
  7. $bericht = str_replace(":d", "<img src=\"smileys/emotie1.gif\">", $bericht);
  8. $bericht = str_replace(":|", "<img src=\"smileys/emotie3.gif\">", $bericht);
  9. $bericht = str_replace("(h)", "<img src=\"smileys/emotie5.gif\">", $bericht);
  10. $bericht = str_replace("(6)", "<img src=\"smileys/emotie7.gif\">", $bericht);
  11. $bericht = str_replace("(h2)", "<img src=\"smileys/emotie9.gif\">", $bericht);
  12. $bericht = str_replace(":X", "<img src=\"smileys/emotie11.gif\">", $bericht);
  13. $bericht = str_replace(",)", "<img src=\"smileys/emotie13.gif\">", $bericht);
  14. $bericht = str_replace(":/", "<img src=\"smileys/emotie15.gif\">", $bericht);
  15. $bericht = str_replace(":!s", "<img src=\"smileys/emotie17.gif\">", $bericht);
  16. $bericht = str_replace(":!/", "<img src=\"smileys/emotie28.gif\">", $bericht);
  17. $bericht = str_replace("<)", "<img src=\"smileys/happy.gif.gif\">", $bericht);
  18. $bericht = str_replace(":!|", "<img src=\"smileys/icon9.gif\">", $bericht);
  19. $bericht = str_replace("<d", "<img src=\"smileys/laugh.gif\">", $bericht);
  20. $bericht = str_replace(":-|", "<img src=\"smileys/mellow.gif\">", $bericht);
  21. $bericht = str_replace(":o", "<img src=\"smileys/ohmy.gif\">", $bericht);
  22. $bericht = str_replace(":!)", "<img src=\"smileys/rolleyes.gif\">", $bericht);
  23. $bericht = str_replace(">|", "<img src=\"smileys/sleep.gif\">", $bericht);
  24. $bericht = str_replace("8-)", "<img src=\"smileys/unsure.gif\">", $bericht);
  25. $bericht = str_replace(";)", "<img src=\"smileys/wink.gif\">", $bericht);
  26. $bericht = str_replace("(?)", "<img src=\"smileys/vraag.gif\">", $bericht);
  27. $bericht = str_replace("(off)", "<img src=\"smileys/offtopic.gif\">", $bericht);
  28. $bericht = str_replace("(8)", "<img src=\"smileys/emotie2.gif\">", $bericht);
  29. $bericht = str_replace("8!|", "<img src=\"smileys/emotie4.gif\">", $bericht);
  30. $bericht = str_replace(";!s", "<img src=\"smileys/emotie6.gif\">", $bericht);
  31. $bericht = str_replace("0)", "<img src=\"smileys/emotie8.gif\">", $bericht);
  32. $bericht = str_replace(":!!/", "<img src=\"smileys/emotie10.gif\">", $bericht);
  33. $bericht = str_replace(":°", "<img src=\"smileys/emotie12.gif\">", $bericht);
  34. $bericht = str_replace("x)", "<img src=\"smileys/emotie14.gif\">", $bericht);
  35. $bericht = str_replace("x'", "<img src=\"smileys/emotie16.gif\">", $bericht);
  36. $bericht = str_replace(":-0", "<img src=\"smileys/emotie18.gif\">", $bericht);
  37. $bericht = str_replace(":p", "<img src=\"smileys/emotie38.gif\">", $bericht);
  38. $bericht = str_replace("(n)", "<img src=\"smileys/huh.gif\">", $bericht);
  39. $bericht = str_replace("(!)", "<img src=\"smileys/icon13.gif\">", $bericht);
  40. $bericht = str_replace(":(", "<img src=\"smileys/mad.gif\">", $bericht);
  41. $bericht = str_replace("(f)", "<img src=\"smileys/middelv2.gif\">", $bericht);
  42. $bericht = str_replace("(-)", "<img src=\"smileys/ph34r.gif\">", $bericht);
  43. $bericht = str_replace("*(", "<img src=\"smileys/sad.gif\">", $bericht);
  44. $bericht = str_replace(":)", "<img src=\"smileys/smile.gif\">", $bericht);
  45. $bericht = str_replace(":s", "<img src=\"smileys/wacko.gif\">", $bericht);
  46. $bericht = str_replace("(l)", "<img src=\"smileys/wub.gif\">", $bericht);
  47. $bericht = str_replace("(lh)", "<img src=\"smileys/hard.gif\">", $bericht);
  48.  
  49. //opmaak
  50. $bericht = eregi_replace("\\[color=([^\\[]*)\\]([^\\[]*)\\[/color\\]","<font color=\"\\1\">\\2</font>",$bericht);
  51. $bericht = eregi_replace("\\[size=([^\\[]*)\\]([^\\[]*)\\[/size\\]","<font size=\"\\1\">\\2</font>",$bericht);
  52. $bericht = eregi_replace("\\[align=([^\\[]*)\\]([^\\[]*)\\[/align\\]","<div align=\"\\1\">\\2</div>",$bericht);
  53. $bericht = eregi_replace("\\[email=([^\\[]*)\\]([^\\[]*)\\[/email\\]", "<a href=\"mailto:\\1\">\\2</a>",$bericht);
  54. $bericht = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]","<a href=\\1 target=_blank>\\2</a>",$bericht);
  55. $bericht = eregi_replace("\[quote\]","<b style='font-size: 8pt'>Quote:</b><hr>",$bericht);
  56. $bericht = eregi_replace('\[quote=([[:alnum:]]+)\]', "<b style='font-size: 8pt'>Quote (\\1):</b><hr>",$bericht);
  57. $bericht = eregi_replace("\[/quote\]","<br /><hr>",$bericht);
  58. $bericht = preg_replace("_\[code\](.*?)\[/code\]_ise", "colorcoding('\\1')", $bericht);
  59.  
  60. $bericht = str_replace("[b]","<b>",$bericht);
  61. $bericht = str_replace("[/b]","</b>",$bericht);
  62. $bericht = str_replace("[i]","<i>",$bericht);
  63. $bericht = str_replace("[/i]","</i>",$bericht);
  64. $bericht = str_replace("[u]","<u>",$bericht);
  65. $bericht = str_replace("[/u]","</u>",$bericht);
  66. $bericht = str_replace("[left]","<div align=\"left\">",$bericht);
  67. $bericht = str_replace("[/left]","<div>",$bericht);
  68. $bericht = str_replace("[center]","<center>",$bericht);
  69. $bericht = str_replace("[/center]","</center>",$bericht);
  70. $bericht = str_replace("[right]","<div align=\"right\">",$bericht);
  71. $bericht = str_replace("[/right]","<div>",$bericht);
  72.  
  73. ?>

Drop dit in je pagina:

  1. <script language="javascript">
  2. function setCursor()
  3. {
  4. if(document.frmPost.bericht.createTextRange)
  5. {
  6. document.frmPost.bericht.caretPos = document.selection.createRange().duplicate();
  7. }
  8. }
  9.  
  10. function ubb(begin,eind,opmaak)
  11. {
  12. if(!eind && !opmaak)
  13. {
  14. if(document.frmPost.bericht.createTextRange && document.frmPost.bericht.caretPos)
  15. {
  16. document.frmPost.bericht.caretPos.text = begin;
  17. }
  18. }
  19.  
  20. else if(opmaak == "dubbel")
  21. {
  22. var selectie = document.selection.createRange().text;
  23. if(!selectie)
  24. {
  25. var url_deel = prompt("Typ hier de/het "+ begin +" die/dat geplaatst moet worden:","");
  26. var tekst_deel = prompt("Typ hier de tekst die geplaatst moet worden:","");
  27. if(url_deel && tekst_deel)
  28. {
  29. document.frmPost.bericht.caretPos.text = "["+begin+"="+url_deel+"]" + tekst_deel + "[/"+eind+"]";
  30. }
  31. }
  32.  
  33. if(selectie)
  34. {
  35. var url_deel = prompt("Typ hier de url die geplaatst moet worden:","");
  36. if(url_deel)
  37. {
  38. document.selection.createRange().text = "["+begin+"="+url_deel+"]" + selectie + "[/"+eind+"]";
  39. }
  40. }
  41. }
  42.  
  43. else
  44. {
  45. if(opmaak != "geen")
  46. {
  47. var selectie = document.selection.createRange().text;
  48. if(!selectie)
  49. {
  50. var new_inhoud = prompt("Typ hier de tekst in waarrond "+begin+" & "+eind+" geplaatst moet worden:","");
  51. if(new_inhoud)
  52. {
  53. document.frmPost.bericht.caretPos.text = begin + new_inhoud + eind;
  54. }
  55. }
  56.  
  57. if(selectie)
  58. {
  59. document.selection.createRange().text = begin + selectie + eind;
  60. }
  61. }
  62. }
  63.  
  64. document.frmPost.bericht.focus();
  65. return;
  66. }
  67. </script>


En zo ziet dan de tekstveld eruit:
  1. <textarea rows="5" cols="15" name="bericht" onkeyup="setCursor();" onkeydown="setCursor();" onfocus="setCursor();" onclick="setCursor();">Tik hier je tekst...</textarea>


Gebruik dit. Is trouwens wel een script van sima maar dat doet er niet toe. Het werkt zeker goed.:)
Offline b4nkr0bz0r - 31/10/2005 10:36 (laatste wijziging 31/10/2005 10:37)
Avatar van b4nkr0bz0r PHP gevorderde Ik denk dat hij liever wil wbeten hoe hij zijn eigen script in orde maakt!
en het komt omdat je new Array(); hebt dat moet gewoon new array(); zijn! (lowercase dus )
Offline Ontani - 31/10/2005 12:27
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
@ b4nkr0bz0r: tis wel degelijk: new Array();
Offline Rens - 31/10/2005 12:28 (laatste wijziging 31/10/2005 12:28)
Avatar van Rens Gouden medaille

Crew algemeen
@Tomk, ik wil mijn eigen script werkend hebben en niet een script van een ander.
Ik zeg ook:
Citaat:
Kan iemand me vertellen waarom het niet werkt?

Dus niet:
Citaat:
Kan iemand me een werkend script geven


@b4nkr0bz0r: Ik zal het eens proberen.

edit; Ik had het dus wel goed^^
Had ook al in de js van SiMa gekeken, en daar stond het ook met een A i.p.v. een a.
Offline Thomas - 31/10/2005 13:21
Avatar van Thomas Moderator Als "hij geen waardes toevoegt" dan is het voor het oplossen van je probleem misschien handig om erbij te vermelden hoe je de functie "opmaak" aanroept.

Mijn ervaring is dat als je script op onverklaarbare wijze niet werkt, je het beste waarden kunt gaan window.alert-en.

Ook is het misschien verstandig om variabelen aan te maken met var, dus:

  1. var t = new Array();


in plaats van

  1. t = new Array();
Offline Rens - 31/10/2005 13:48 (laatste wijziging 31/10/2005 13:48)
Avatar van Rens Gouden medaille

Crew algemeen
Als ik die alert erbij zet, worden de gegevens juist ge-alert.
Dus bijvoorbeeld:
  1. window.alert(item+" - "+form+" - "+field);

Zal met de aanroep:
  1. onclick="javascript:opmaak('b', 'form', 'bericht');"

Het volgende alerten:
Citaat:
b - form - bericht

Dus de waarden die het scriptje doorkrijgt kloppen wel.

Hmmz, na beetje ermee klooien zag ik de fout opeens...
Ik gebruikte document.forms[form].field[field], maar dat moest natuurlijk document.forms[form].elements[field] zijn:$

Dus de werkende functie is zo:
  1. function opmaak(item, form, field)
  2. {
  3. if(t[item]['status'] == "dicht")
  4. {
  5. tag = t[item]['open'];
  6. t[item]['status'] = "open";
  7. } else
  8. {
  9. tag = t[item]['dicht'];
  10. t[item]['status'] = "dicht";
  11. }
  12. document.forms['form'].elements['bericht'].value += tag;
  13. }
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.289s