webForum webForum sponsras med lina och serverplats av Binero AB

Gå tillbaka   webForum > Utveckling > Webbutveckling > Javascript

Javascript Här diskuteras det som rör Javascript, AJAX, DOM & DHTML.

Svar
 
Trådverktyg Visningsalternativ
Äldre 2004-05-04, 17:00   #1
Jesper T
Medlem
 
Jesper Ts avatar
 
Registrerad: 2001-11-15
Ort: Järna
Inlägg: 7 050
Lösningar: 182
Få div att bli textarea?

<div id="edit">Textmassa</div>
vill jag med en enkel knapptryckning skall förvandla sig till:
<textarea>Textmassa</textarea>
och viseversa.
__________________
Vänligen Jesper
Etisk kommunikation
Jesper T besöker inte forumet just nu   Svara med citat
Äldre 2004-05-04, 17:22   #2
nitro2k01
Forumvärd
 
nitro2k01s avatar
 
Registrerad: 2003-08-26
Inlägg: 7 469
Lösningar: 645
För IE kan du använda contenteditable: [kod]<div id="edit"
Kod:
contenteditable="true">Textmassa</div>
I javascript borde något av dessa funka(orkar inte testa)
Kod:
document.getElementById("edit").contentEditable = true;   // Alt. false
document.getElementById("edit").contenteditable = true;   // Alt. false
__________________
Gameboy Genius - Foto: Gatukonst och elektronikporr
Internklippning:
1) Snaggning av fångar.
2) Klippning frisörer emellan.
nitro2k01 besöker inte forumet just nu   Svara med citat
Äldre 2004-05-04, 17:27   #3
Jesper T
Medlem
 
Jesper Ts avatar
 
Registrerad: 2001-11-15
Ort: Järna
Inlägg: 7 050
Lösningar: 182
Nej, inte contentEditable (usch..), jag menar textarea.
__________________
Vänligen Jesper
Etisk kommunikation
Jesper T besöker inte forumet just nu   Svara med citat
Äldre 2004-05-04, 17:38   #4
nitro2k01
Forumvärd
 
nitro2k01s avatar
 
Registrerad: 2003-08-26
Inlägg: 7 469
Lösningar: 645
Med reservation för buggar etc eftersom det är skrivet på stående fot. Dessutom helt IE-specifikt (?)

Kod:
 
<script language="text/javascript"><!--
function switchEdit2(ename){
   var newtag = (document.getElementById(ename).tagName.toLowerCase()=="textarea")?"div": "textarea";
   document.getElementById(ename).outerHTML = "<" + newtag + "id=\"" + ename + "\">" + document.getElementById(ename).innerText + "</" + newtag +">";
}


function switchEdit(ename){
  document.getElementById(ename).tagName = (document.getElementById(ename).tagName.toLowerCase()=="textarea")?"div": "textarea";
}


//--></script>
<div id="edit"> Foobar </div>
<a href="javascript:switchEdit('edit');">Byt metod 1</a>
 - <a href="javascript:switchEdit2('edit');">Byt metod 2</a>
__________________
Gameboy Genius - Foto: Gatukonst och elektronikporr
Internklippning:
1) Snaggning av fångar.
2) Klippning frisörer emellan.

Senast redigerad av nitro2k01, 2004-05-04 klockan 17:45
nitro2k01 besöker inte forumet just nu   Svara med citat
Äldre 2004-05-04, 18:07   #5
Jesper T
Medlem
 
Jesper Ts avatar
 
Registrerad: 2001-11-15
Ort: Järna
Inlägg: 7 050
Lösningar: 182
Fortfarande I.E. men det verkar funka
Kod:
<SCRIPT>
function replaceElement()
{   
    var oChild=Div1.children(0);	
    var sInnerHTML = oChild.innerHTML;
    if (oChild.tagName.toLowerCase()=="textarea")
    {
        oNewChild=document.createElement("div");
        Div1.replaceChild(oNewChild, oChild);
        oNewChild.innerHTML=sInnerHTML
    }
    else
    {
        oNewChild=document.createElement("textarea");
        Div1.replaceChild(oNewChild, oChild);
        oNewChild.innerHTML=sInnerHTML		
    }
}
</SCRIPT>


<DIV ID=Div1>
<div>Textmassor</div>
</DIV>
<button onclick="replaceElement()">Toggle!</button>
nitro2k01: fick aldrig din variant/varianter att funka. Tack ändå.
__________________
Vänligen Jesper
Etisk kommunikation
Jesper T besöker inte forumet just nu   Svara med citat
Äldre 2004-05-04, 18:47 Markerad som löst av Jesper T   #6
Peter S
Medlem
 
Registrerad: 2002-12-15
Ort: Hudiksvall
Inlägg: 5 477
Lösningar: 806
En mer kompatibel variant:
Kod:
function switchElm() {
    var mElm = document.getElementById("holder"),
	cElm = (function (){
	    var nodes = mElm.childNodes,
		iLen = nodes.length;
	    for (var i = 0; i < iLen; ++i)
		if (nodes[i].nodeType == 1) return nodes[i];
	    return 0;
	})(),
        nElm;

    if (cElm == 0) return;

    switch (cElm.nodeName.toLowerCase()) {
	case "div":
	{
	    nElm = document.createElement("textarea");
	    nElm.value = cElm.innerHTML;
	} break;

	case "textarea":
	{
	    nElm = document.createElement("div");
	    nElm.innerHTML = cElm.value;
	} break;

	default: return;
    }

    mElm.replaceChild(nElm, cElm);
}

...

<div id="holder">
    <div>Textmassa</div>
</div>
<button type="button" onclick="switchElm()">Switch</button>

Senast redigerad av Peter S, 2004-05-04 klockan 20:25
Peter S besöker inte forumet just nu   Svara med citat
Äldre 2004-05-04, 20:08   #7
Jesper T
Medlem
 
Jesper Ts avatar
 
Registrerad: 2001-11-15
Ort: Järna
Inlägg: 7 050
Lösningar: 182
Varför måste man ha en div runt om igentligen? (holder)
Varför kan man inte bara döpa denna (<div id="något id">Textmassa</div>) ?
__________________
Vänligen Jesper
Etisk kommunikation
Jesper T besöker inte forumet just nu   Svara med citat
Äldre 2004-05-04, 20:30   #8
Peter S
Medlem
 
Registrerad: 2002-12-15
Ort: Hudiksvall
Inlägg: 5 477
Lösningar: 806
Det blir enklare att referera till det aktuella elementet. Visst kan man ta bort "behållaren", men då blir det mer komplicerat att hitta noden. Det är alltså bara en bekvämlighetssak

BTW: Jag har modifierat ovanstående kod en smula.


Peter S besöker inte forumet just nu   Svara med citat
Äldre 2004-05-04, 20:42   #9
Jesper T
Medlem
 
Jesper Ts avatar
 
Registrerad: 2001-11-15
Ort: Järna
Inlägg: 7 050
Lösningar: 182
Tycker att det borde vara mer komplicerat (enligt min logik) att först skapa en behållare om man kan referera direkt till ex. ett id.
__________________
Vänligen Jesper
Etisk kommunikation
Jesper T besöker inte forumet just nu   Svara med citat
Svar
webForum > Utveckling > Webbutveckling > Javascript

Trådverktyg
Visningsalternativ

Forumregler
Du får inte posta nya trådar
Du får inte posta svar
Du får inte bifoga filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är i GMT +1. Klockan är nu 16:50.


Powered by: vBulletin Version 3.8.6
Copyright © webForum