Archief - JS: Javascript - Dojo

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Da_Luke

Legacy Member
Jah, hier zijn we weer... na een uurtje zoeken op google en dergelijke ben ik het beu... dus zal het hier maar vragen!

in een functie heb ik volgende var:
PHP:
var tekst_div = document.getElementById('tekst_'+ reactie_id);

deze haalt een tekst op uit een div zoals je ziet :)
Nu wil ik deze div in een <textarea></textarea> plaatsten en dat doe ik met volgende code:

PHP:
+ "				<textarea name='edit_reactie' class='kader_5'>" + tekst_div.innerHTML + "</textarea>"

Dat werkt allemaal héél perfect zoals het moet... alleen heb ik een probleem... in die <textarea> geeft hij de \n als <br> ... dit is natuurlijk niet handig... deze mogen daar dus niet staan en die tekst moet daar dus gewoon staan wel met een enter maar dus niet zichtbaar met een <br> ... hoe kan ik deze in die code vervangen en correct in mijn <textarea> laten tonen?

alvast bedankt voor enige reactie...

azerty_2006

Legacy Member
Misschien iets alla (:unsure:) :
Code:
uwTexarea.innerHTML.replace("<br>", "\n");

Da_Luke

Legacy Member
hmmm, dat werkt al half... heb dit nu zo gedaan:

PHP:
var tekst_div = document.getElementById('tekst_'+ reactie_id);
var tekst_divje = tekst_div.innerHTML.replace("<br>", "\n");

+ "				<textarea name='edit_reactie' class='kader_5'>" + tekst_divje + "</textarea>"

dan doet hij het volgende:

Code:
tekst tekst tekst
tekst tekst tekst
tekst tekst tekst

[I]wordt ->[/I]

tekst tekst tekst

tekst tekst tekst
<br>tekst tekst tekst

[I]zonder de aanpassing was het ->[/I]

tekst tekst tekst
<br> tekst tekst tekst
<br> tekst tekst tekst

azerty_2006

Legacy Member
Misschien dit eens proberen:

Code:
var tekst_div = document.getElementById('tekst_'+ reactie_id);

tekst_div.innerHTML.replace("<br>", "\n");

var tekst_divje = tekst_div.innerHTML;

+ "                <textarea name='edit_reactie' class='kader_5'>" + tekst_divje + "</textarea>"

Maar ik raad u toch aan om die textarea in een var de steken en iets als dit te doen:

Code:
var tekst_div		= document.getElementById('tekst_'+ reactie_id);
var mijnTextarea	= document.getElementById('ID_van_de_textarea');

mijnTextarea.innerHTML = tekst_div.innerHTML;
mijnTextarea.innerHTML.replace("<br>", "\n");

En moest dat nog niet lukken desnoods een keer of 100 de replace() in een for loop loopen :evil:.

Da_Luke

Legacy Member
Kheb beetje lopen zoeken nu in mijn oude codes, want ik had daar ooit eens de oplossing voor gevonden en ja hoor! Het werkt in firefox prima maar ja ge weet het verzekers al... in internet explorer dus weer niet... hier is m'n code...

PHP:
<script language="javascript">
	// functie replace it
	function replaceAll( str, from, to ) {
	    var idx = str.indexOf( from );
	
	
	    while ( idx > -1 ) {
	        str = str.replace( from, to );
	        idx = str.indexOf( from );
	    }
	
	    return str;
	}
	
	// replace it
	function remove_enters(value) {
		value = replaceAll(value, '<br>', '');
		return value;
		
	}

	// wiper
	function wipe(node, reactie_id, topic_id) {
		var tekst_div = document.getElementById('tekst_'+ reactie_id);
		var wipeOut = dojo.lfx.wipeOut(node, null, null, function(n) {
			n.innerHTML = "<form action='' method='post'>"
			+ "	<table width='100%' cellspacing='0' cellpadding='0'>"
			+ "		<tr>"
			+ "			<td>"
			+ "				<textarea name='edit_reactie' class='kader_5'>" + remove_enters(tekst_div.innerHTML) + "</textarea>"
			+ "			</td>"
			+ "		</tr>"
			+ "		<tr>"
			+ "			<td align='right'>"
			+ "				<input type='submit' name='posten' value='Edit' class='okbutton'>"
			+ "			</td>"
			+ "		</tr>"
			+ "	</table>"
			+ "	</form>"
			dojo.lfx.wipeIn(n).play();
		});
		wipeOut.play();
	}
</script>

Dan geeft hij in Firefox mooi het volgende:
Code:
tekst tekst tekst
tekst tekst tekst 
tekst tekst tekst

maar in internet explorer geeft hij dan het volgende:
Code:
tekst tekst tekst <BR>tekst tekst tekst <BR>tekst tekst tekst

zelfs al heef ik de functie remove_enters het volgende
PHP:
value = replaceAll(value, '<br>', '\n');

of eigenlijk gelijk wat... hij vervangt dat niet...

Iemand die me een handje verder kan helpen? :)

JensDT42

Legacy Member
Welja, String.replace() vervangt inderdaad enkel het eerste voorkomen. Probeer eens deze regexp in de plaats:

PHP:
var tekst_div = document.getElementById('tekst_'+ reactie_id);
var tekst_divje = tekst_div.innerHTML.replace(/<br>/g, "\n");

De 'g' staat voor 'global' en zorgt ervoor dat elk voorkomen vervangen wordt, niet enkel het eerste.

Da_Luke

Legacy Member
Dat werkt idd! Alleen niet in IE... in FF werkt da logischerwijs perfect!

JensDT42

Legacy Member
Da_Luke zei:
Dat werkt idd! Alleen niet in IE... in FF werkt da logischerwijs perfect!

Wat werkt precies niet in IE, het replacen of het zetten van de waarde in het tekstvak?

Da_Luke

Legacy Member
in IE replaced hij de tekst niet:

tekst tekst tekst
tekst tekst tekst

wordt in IE

tekst tekst tekst <BR>tekst tekst tekst

Terwijl in FF dat mooi

tekst tekst tekst
tekst tekst tekst

blijft

JensDT42

Legacy Member
En:

PHP:
var tekst_div = document.getElementById('tekst_'+ reactie_id);
var tekst_divje = tekst_div.innerHTML.replace(/<br>/gi, "\n");

?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan