Arrays doen moeilijk
Rens - 30/10/2005 21:08 (laatste wijziging 30/10/2005 21:12)
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:
t = new Array();
t['b'] = new Array();
t['b']['status'] = "dicht";
t['b']['open'] = "[b]";
t['b']['dicht'] = "[/b]";
t['u'] = new Array();
t['u']['status'] = "dicht";
t['u']['open'] = "[u]";
t['u']['dicht'] = "[/u]";
t['i'] = new Array();
t['i']['status'] = "dicht";
t['i']['open'] = "[i]";
t['i']['dicht'] = "[/i]";
t['code'] = new Array();
t['code']['status'] = "dicht";
t['code']['open'] = "[ code]";
t['code']['dicht'] = "[ /code]";";
// die 2 spaties ^
// horen er eigenlijk niet bij, maar anders doet het code gedoe moeilijk
t[ 'b' ] [ 'status' ] = "dicht" ;
t[ 'b' ] [ 'open' ] = "[b]" ;
t[ 'b' ] [ 'dicht' ] = "[/b]" ;
t[ 'u' ] [ 'status' ] = "dicht" ;
t[ 'u' ] [ 'open' ] = "[u]" ;
t[ 'u' ] [ 'dicht' ] = "[/u]" ;
t[ 'i' ] [ 'status' ] = "dicht" ;
t[ 'i' ] [ 'open' ] = "[i]" ;
t[ 'i' ] [ 'dicht' ] = "[/i]" ;
t[ 'code' ] [ 'status' ] = "dicht" ;
t[ 'code' ] [ 'open' ] = "[ code]" ;
t[ 'code' ] [ 'dicht' ] = "[ /code]" ; ";
// die 2 spaties ^
// horen er eigenlijk niet bij, maar anders doet het code gedoe moeilijk
Nu heb ik een functie voor die 4 ubb codes:
function opmaak(item, field, form)
{
if(t[item]['status'] == "dicht")
{
tag = t[item]['open'];
t[item]['status'] = "open";
} else
{
tag = t[item]['dicht'];
t[item]['status'] = "dicht";
}
document.forms[form].field[field].value+=tag+" ";
}
function opmaak( item, field, form)
{
if ( t[ item] [ 'status' ] == "dicht" )
{
tag = t[ item] [ 'open' ] ;
t[ item] [ 'status' ] = "open" ;
} else
{
tag = t[ item] [ 'dicht' ] ;
t[ item] [ 'status' ] = "dicht" ;
}
document. forms[ form] . field[ field] . value+= tag+ " " ;
}
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
tomk - 31/10/2005 07:41
ASP interesse
ubb.inc.php
<?
$bericht = htmlspecialchars($bericht);
$bericht = str_replace("\n","<br>",$bericht);
//smilies
$bericht = str_replace(":d", "<img src=\"smileys/emotie1.gif\">", $bericht);
$bericht = str_replace(":|", "<img src=\"smileys/emotie3.gif\">", $bericht);
$bericht = str_replace("(h)", "<img src=\"smileys/emotie5.gif\">", $bericht);
$bericht = str_replace("(6)", "<img src=\"smileys/emotie7.gif\">", $bericht);
$bericht = str_replace("(h2)", "<img src=\"smileys/emotie9.gif\">", $bericht);
$bericht = str_replace(":X", "<img src=\"smileys/emotie11.gif\">", $bericht);
$bericht = str_replace(",)", "<img src=\"smileys/emotie13.gif\">", $bericht);
$bericht = str_replace(":/", "<img src=\"smileys/emotie15.gif\">", $bericht);
$bericht = str_replace(":!s", "<img src=\"smileys/emotie17.gif\">", $bericht);
$bericht = str_replace(":!/", "<img src=\"smileys/emotie28.gif\">", $bericht);
$bericht = str_replace("<)", "<img src=\"smileys/happy.gif.gif\">", $bericht);
$bericht = str_replace(":!|", "<img src=\"smileys/icon9.gif\">", $bericht);
$bericht = str_replace("<d", "<img src=\"smileys/laugh.gif\">", $bericht);
$bericht = str_replace(":-|", "<img src=\"smileys/mellow.gif\">", $bericht);
$bericht = str_replace(":o", "<img src=\"smileys/ohmy.gif\">", $bericht);
$bericht = str_replace(":!)", "<img src=\"smileys/rolleyes.gif\">", $bericht);
$bericht = str_replace(">|", "<img src=\"smileys/sleep.gif\">", $bericht);
$bericht = str_replace("8-)", "<img src=\"smileys/unsure.gif\">", $bericht);
$bericht = str_replace(";)", "<img src=\"smileys/wink.gif\">", $bericht);
$bericht = str_replace("(?)", "<img src=\"smileys/vraag.gif\">", $bericht);
$bericht = str_replace("(off)", "<img src=\"smileys/offtopic.gif\">", $bericht);
$bericht = str_replace("(8)", "<img src=\"smileys/emotie2.gif\">", $bericht);
$bericht = str_replace("8!|", "<img src=\"smileys/emotie4.gif\">", $bericht);
$bericht = str_replace(";!s", "<img src=\"smileys/emotie6.gif\">", $bericht);
$bericht = str_replace("0)", "<img src=\"smileys/emotie8.gif\">", $bericht);
$bericht = str_replace(":!!/", "<img src=\"smileys/emotie10.gif\">", $bericht);
$bericht = str_replace(":°", "<img src=\"smileys/emotie12.gif\">", $bericht);
$bericht = str_replace("x)", "<img src=\"smileys/emotie14.gif\">", $bericht);
$bericht = str_replace("x'", "<img src=\"smileys/emotie16.gif\">", $bericht);
$bericht = str_replace(":-0", "<img src=\"smileys/emotie18.gif\">", $bericht);
$bericht = str_replace(":p", "<img src=\"smileys/emotie38.gif\">", $bericht);
$bericht = str_replace("(n)", "<img src=\"smileys/huh.gif\">", $bericht);
$bericht = str_replace("(!)", "<img src=\"smileys/icon13.gif\">", $bericht);
$bericht = str_replace(":(", "<img src=\"smileys/mad.gif\">", $bericht);
$bericht = str_replace("(f)", "<img src=\"smileys/middelv2.gif\">", $bericht);
$bericht = str_replace("(-)", "<img src=\"smileys/ph34r.gif\">", $bericht);
$bericht = str_replace("*(", "<img src=\"smileys/sad.gif\">", $bericht);
$bericht = str_replace(":)", "<img src=\"smileys/smile.gif\">", $bericht);
$bericht = str_replace(":s", "<img src=\"smileys/wacko.gif\">", $bericht);
$bericht = str_replace("(l)", "<img src=\"smileys/wub.gif\">", $bericht);
$bericht = str_replace("(lh)", "<img src=\"smileys/hard.gif\">", $bericht);
//opmaak
$bericht = eregi_replace("\\[color=([^\\[]*)\\]([^\\[]*)\\[/color\\]","<font color=\"\\1\">\\2</font>",$bericht);
$bericht = eregi_replace("\\[size=([^\\[]*)\\]([^\\[]*)\\[/size\\]","<font size=\"\\1\">\\2</font>",$bericht);
$bericht = eregi_replace("\\[align=([^\\[]*)\\]([^\\[]*)\\[/align\\]","<div align=\"\\1\">\\2</div>",$bericht);
$bericht = eregi_replace("\\[email=([^\\[]*)\\]([^\\[]*)\\[/email\\]", "<a href=\"mailto:\\1\">\\2</a>",$bericht);
$bericht = eregi_replace("\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]","<a href=\\1 target=_blank>\\2</a>",$bericht);
$bericht = eregi_replace("\[quote\]","<b style='font-size: 8pt'>Quote:</b><hr>",$bericht);
$bericht = eregi_replace('\[quote=([[:alnum:]]+)\]', "<b style='font-size: 8pt'>Quote (\\1):</b><hr>",$bericht);
$bericht = eregi_replace("\[/quote\]","<br /><hr>",$bericht);
$bericht = preg_replace("_\[code\](.*?)\[/code\]_ise", "colorcoding('\\1')", $bericht);
$bericht = str_replace("[b]","<b>",$bericht);
$bericht = str_replace("[/b]","</b>",$bericht);
$bericht = str_replace("[i]","<i>",$bericht);
$bericht = str_replace("[/i]","</i>",$bericht);
$bericht = str_replace("[u]","<u>",$bericht);
$bericht = str_replace("[/u]","</u>",$bericht);
$bericht = str_replace("[left]","<div align=\"left\">",$bericht);
$bericht = str_replace("[/left]","<div>",$bericht);
$bericht = str_replace("[center]","<center>",$bericht);
$bericht = str_replace("[/center]","</center>",$bericht);
$bericht = str_replace("[right]","<div align=\"right\">",$bericht);
$bericht = str_replace("[/right]","<div>",$bericht);
?>
<?
//smilies
$bericht = str_replace ( ":d" , "<img src=\" smileys/emotie1.gif\" >" , $bericht ) ; $bericht = str_replace ( ":|" , "<img src=\" smileys/emotie3.gif\" >" , $bericht ) ; $bericht = str_replace ( "(h)" , "<img src=\" smileys/emotie5.gif\" >" , $bericht ) ; $bericht = str_replace ( "(6)" , "<img src=\" smileys/emotie7.gif\" >" , $bericht ) ; $bericht = str_replace ( "(h2)" , "<img src=\" smileys/emotie9.gif\" >" , $bericht ) ; $bericht = str_replace ( ":X" , "<img src=\" smileys/emotie11.gif\" >" , $bericht ) ; $bericht = str_replace ( ",)" , "<img src=\" smileys/emotie13.gif\" >" , $bericht ) ; $bericht = str_replace ( ":/" , "<img src=\" smileys/emotie15.gif\" >" , $bericht ) ; $bericht = str_replace ( ":!s" , "<img src=\" smileys/emotie17.gif\" >" , $bericht ) ; $bericht = str_replace ( ":!/" , "<img src=\" smileys/emotie28.gif\" >" , $bericht ) ; $bericht = str_replace ( "<)" , "<img src=\" smileys/happy.gif.gif\" >" , $bericht ) ; $bericht = str_replace ( ":!|" , "<img src=\" smileys/icon9.gif\" >" , $bericht ) ; $bericht = str_replace ( "<d" , "<img src=\" smileys/laugh.gif\" >" , $bericht ) ; $bericht = str_replace ( ":-|" , "<img src=\" smileys/mellow.gif\" >" , $bericht ) ; $bericht = str_replace ( ":o" , "<img src=\" smileys/ohmy.gif\" >" , $bericht ) ; $bericht = str_replace ( ":!)" , "<img src=\" smileys/rolleyes.gif\" >" , $bericht ) ; $bericht = str_replace ( ">|" , "<img src=\" smileys/sleep.gif\" >" , $bericht ) ; $bericht = str_replace ( "8-)" , "<img src=\" smileys/unsure.gif\" >" , $bericht ) ; $bericht = str_replace ( ";)" , "<img src=\" smileys/wink.gif\" >" , $bericht ) ; $bericht = str_replace ( "(?)" , "<img src=\" smileys/vraag.gif\" >" , $bericht ) ; $bericht = str_replace ( "(off)" , "<img src=\" smileys/offtopic.gif\" >" , $bericht ) ; $bericht = str_replace ( "(8)" , "<img src=\" smileys/emotie2.gif\" >" , $bericht ) ; $bericht = str_replace ( "8!|" , "<img src=\" smileys/emotie4.gif\" >" , $bericht ) ; $bericht = str_replace ( ";!s" , "<img src=\" smileys/emotie6.gif\" >" , $bericht ) ; $bericht = str_replace ( "0)" , "<img src=\" smileys/emotie8.gif\" >" , $bericht ) ; $bericht = str_replace ( ":!!/" , "<img src=\" smileys/emotie10.gif\" >" , $bericht ) ; $bericht = str_replace ( ":°" , "<img src=\" smileys/emotie12.gif\" >" , $bericht ) ; $bericht = str_replace ( "x)" , "<img src=\" smileys/emotie14.gif\" >" , $bericht ) ; $bericht = str_replace ( "x'" , "<img src=\" smileys/emotie16.gif\" >" , $bericht ) ; $bericht = str_replace ( ":-0" , "<img src=\" smileys/emotie18.gif\" >" , $bericht ) ; $bericht = str_replace ( ":p" , "<img src=\" smileys/emotie38.gif\" >" , $bericht ) ; $bericht = str_replace ( "(n)" , "<img src=\" smileys/huh.gif\" >" , $bericht ) ; $bericht = str_replace ( "(!)" , "<img src=\" smileys/icon13.gif\" >" , $bericht ) ; $bericht = str_replace ( ":(" , "<img src=\" smileys/mad.gif\" >" , $bericht ) ; $bericht = str_replace ( "(f)" , "<img src=\" smileys/middelv2.gif\" >" , $bericht ) ; $bericht = str_replace ( "(-)" , "<img src=\" smileys/ph34r.gif\" >" , $bericht ) ; $bericht = str_replace ( "*(" , "<img src=\" smileys/sad.gif\" >" , $bericht ) ; $bericht = str_replace ( ":)" , "<img src=\" smileys/smile.gif\" >" , $bericht ) ; $bericht = str_replace ( ":s" , "<img src=\" smileys/wacko.gif\" >" , $bericht ) ; $bericht = str_replace ( "(l)" , "<img src=\" smileys/wub.gif\" >" , $bericht ) ; $bericht = str_replace ( "(lh)" , "<img src=\" smileys/hard.gif\" >" , $bericht ) ;
//opmaak
$bericht = eregi_replace ( "\\[color=([^\\[]*)\\]([^\\[]*)\\[/color\\]" , "<font color=\" \\1 \" >\\2 </font>" , $bericht ) ; $bericht = eregi_replace ( "\\[size=([^\\[]*)\\]([^\\[]*)\\[/size\\]" , "<font size=\" \\1 \" >\\2 </font>" , $bericht ) ; $bericht = eregi_replace ( "\\[align=([^\\[]*)\\]([^\\[]*)\\[/align\\]" , "<div align=\" \\1 \" >\\2 </div>" , $bericht ) ; $bericht = eregi_replace ( "\\[email=([^\\[]*)\\]([^\\[]*)\\[/email\\]" , "<a href=\" mailto:\\1 \" >\\2 </a>" , $bericht ) ; $bericht = eregi_replace ( "\\[url=([^\\[]*)\\]([^\\[]*)\\[/url\\]" , "<a href=\\1 target=_blank>\\2 </a>" , $bericht ) ; $bericht = eregi_replace ( "\[quote\]" , "<b style='font-size: 8pt'>Quote:</b><hr>" , $bericht ) ; $bericht = eregi_replace ( '\[quote=([[:alnum:]]+)\]' , "<b style='font-size: 8pt'>Quote (\\1 ):</b><hr>" , $bericht ) ; $bericht = preg_replace ( "_\[code\](.*?)\[/code\]_ise" , "colorcoding('\\1 ')" , $bericht ) ;
$bericht = str_replace ( "[left]" , "<div align=\" left\" >" , $bericht ) ; $bericht = str_replace ( "[center]" , "<center>" , $bericht ) ; $bericht = str_replace ( "[/center]" , "</center>" , $bericht ) ; $bericht = str_replace ( "[right]" , "<div align=\" right\" >" , $bericht ) ;
?>
Drop dit in je pagina:
<script language="javascript">
function setCursor()
{
if(document.frmPost.bericht.createTextRange)
{
document.frmPost.bericht.caretPos = document.selection.createRange().duplicate();
}
}
function ubb(begin,eind,opmaak)
{
if(!eind && !opmaak)
{
if(document.frmPost.bericht.createTextRange && document.frmPost.bericht.caretPos)
{
document.frmPost.bericht.caretPos.text = begin;
}
}
else if(opmaak == "dubbel")
{
var selectie = document.selection.createRange().text;
if(!selectie)
{
var url_deel = prompt("Typ hier de/het "+ begin +" die/dat geplaatst moet worden:","");
var tekst_deel = prompt("Typ hier de tekst die geplaatst moet worden:","");
if(url_deel && tekst_deel)
{
document.frmPost.bericht.caretPos.text = "["+begin+"="+url_deel+"]" + tekst_deel + "[/"+eind+"]";
}
}
if(selectie)
{
var url_deel = prompt("Typ hier de url die geplaatst moet worden:","");
if(url_deel)
{
document.selection.createRange().text = "["+begin+"="+url_deel+"]" + selectie + "[/"+eind+"]";
}
}
}
else
{
if(opmaak != "geen")
{
var selectie = document.selection.createRange().text;
if(!selectie)
{
var new_inhoud = prompt("Typ hier de tekst in waarrond "+begin+" & "+eind+" geplaatst moet worden:","");
if(new_inhoud)
{
document.frmPost.bericht.caretPos.text = begin + new_inhoud + eind;
}
}
if(selectie)
{
document.selection.createRange().text = begin + selectie + eind;
}
}
}
document.frmPost.bericht.focus();
return;
}
</script>
<script language = "javascript" >
function setCursor( )
{
if ( document. frmPost. bericht. createTextRange)
{
document. frmPost. bericht. caretPos = document. selection. createRange( ) . duplicate( ) ;
}
}
function ubb( begin, eind, opmaak)
{
if ( ! eind && ! opmaak)
{
if ( document. frmPost. bericht. createTextRange && document. frmPost. bericht. caretPos)
{
document. frmPost. bericht. caretPos. text = begin;
}
}
else if ( opmaak == "dubbel" )
{
var selectie = document. selection. createRange( ) . text;
if ( ! selectie)
{
var url_deel = prompt( "Typ hier de/het " + begin + " die/dat geplaatst moet worden:" , "" ) ;
var tekst_deel = prompt( "Typ hier de tekst die geplaatst moet worden:" , "" ) ;
if ( url_deel && tekst_deel)
{
document. frmPost. bericht. caretPos. text = "[" + begin+ "=" + url_deel+ "]" + tekst_deel + "[/" + eind+ "]" ;
}
}
if ( selectie)
{
var url_deel = prompt( "Typ hier de url die geplaatst moet worden:" , "" ) ;
if ( url_deel)
{
document. selection. createRange( ) . text = "[" + begin+ "=" + url_deel+ "]" + selectie + "[/" + eind+ "]" ;
}
}
}
else
{
if ( opmaak != "geen" )
{
var selectie = document. selection. createRange( ) . text;
if ( ! selectie)
{
var new_inhoud = prompt( "Typ hier de tekst in waarrond " + begin+ " & " + eind+ " geplaatst moet worden:" , "" ) ;
if ( new_inhoud)
{
document. frmPost. bericht. caretPos. text = begin + new_inhoud + eind;
}
}
if ( selectie)
{
document. selection. createRange( ) . text = begin + selectie + eind;
}
}
}
document. frmPost. bericht. focus( ) ;
return ;
}
</script>
En zo ziet dan de tekstveld eruit:
<textarea rows="5" cols="15" name="bericht" onkeyup="setCursor();" onkeydown="setCursor();" onfocus="setCursor();" onclick="setCursor();">Tik hier je tekst...</textarea>
< 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.:)
Rens - 31/10/2005 12:28 (laatste wijziging 31/10/2005 12:28)
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.
Thomas - 31/10/2005 13:21
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:
in plaats van
Rens - 31/10/2005 13:48 (laatste wijziging 31/10/2005 13:48)
Crew algemeen
Als ik die alert erbij zet, worden de gegevens juist ge-alert.
Dus bijvoorbeeld:
window.alert(item+" - "+form+" - "+field);
window. alert( item+ " - " + form+ " - " + field) ;
Zal met de aanroep:
onclick="javascript:opmaak('b', 'form', 'bericht');"
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:
function opmaak(item, form, field)
{
if(t[item]['status'] == "dicht")
{
tag = t[item]['open'];
t[item]['status'] = "open";
} else
{
tag = t[item]['dicht'];
t[item]['status'] = "dicht";
}
document.forms['form'].elements['bericht'].value += tag;
}
function opmaak( item, form, field)
{
if ( t[ item] [ 'status' ] == "dicht" )
{
tag = t[ item] [ 'open' ] ;
t[ item] [ 'status' ] = "open" ;
} else
{
tag = t[ item] [ 'dicht' ] ;
t[ item] [ 'status' ] = "dicht" ;
}
document. forms[ 'form' ] . elements[ 'bericht' ] . value += tag;
}
Gesponsorde links
Dit onderwerp is gesloten .