![]() |
|
|
|||||||
| Javascript Här diskuteras det som rör Javascript, AJAX, DOM & DHTML. |
![]() |
|
|
Trådverktyg | Visningsalternativ |
|
|
#1 |
|
Medlem
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. |
|
|
|
|
|
#2 |
|
Forumvärd
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> 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. |
|
|
|
|
|
#3 |
|
Medlem
Registrerad: 2001-11-15
Ort: Järna
Inlägg: 7 050
Lösningar: 182 |
Nej, inte contentEditable (usch..
), jag menar textarea.
|
|
|
|
|
|
#4 |
|
Forumvärd
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 |
|
|
|
|
|
#5 |
|
Medlem
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>
|
|
|
|
|
|
Markerad som löst av Jesper T #6 |
|
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 |
|
|
|
|
|
#7 |
|
Medlem
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>) ? |
|
|
|
|
|
#8 |
|
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.
|
|
|
|
|
|
#9 |
|
Medlem
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.
|
|
|
|
![]() |
| Trådverktyg | |
| Visningsalternativ | |
|
|