I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du kan gøre det med innerHTML - men du kan også gøre det med DOM. Det bliver alligevel løsningen i løbet af et par år, hvor innerHTML bliver ubrugelig :)
function Expand() { var f, nod, d=document; f = d.getElementById("fields"); nfiles++; nod = d.createElement("br"); f.appendChild(nod); nod = d.createTextNode(" Billede nr. "+(nfiles+1)+": "); f.appendChild(nod); nod = d.createElement("input"); nod.type = "file"; nod.setAttribute("name", "billeder"+nfiles); nod.setAttribute("size", "25"); f.appendChild(nod); return false; }
Kan ikke helt få funktionen der fjerner det seneste element til at fungere, her er hele koden som den ser ud nu: ------------------------------------------------------------- //add text field var nfiles = 0; function Expand() { if (nfiles < 6) { var f, nod, d=document; f = d.getElementById("fields"); nfiles++; nod = d.createElement("br"); f.appendChild(nod); nod = d.createTextNode((nfiles+1)+". "); f.appendChild(nod); nod = d.createElement("input"); nod.type = "text"; nod.setAttribute("name", "question"+nfiles); nod.setAttribute("class", "competitionformtext"); //css style class for text nod.setAttribute("style", "width:290px;height:12px;margin-top:3px;"); nod.setAttribute("maxlength", "255"); f.appendChild(nod); return false; } else { alert('Beklager, ikke plads til flere svarmuligheder'); } } //remove text field function Remove() { var d = document; var f = d.getElementById("fields"); f.removeChild(f.options[f.length-1]); } -------------------------------------------------------------
Jeg får bare en "f.options has no properties"
Jeg har smidt lige flere point oveni, da spørgsmålet blev lidt mere omfattende end udgangspunktet...
En lille ubetydelig ting, men i IE vises form feltet ikke med den style jeg smider på - den vises bare med default udseende. Firefox viser dog feltet korrekt... Ved du hvorfor?
Gør sådan her: var f, mainNod, nod, d=document; f = d.getElementById("fields"); nfiles++; mainNod = d.createElement("div"); f.appendChild(mainNod); nod = d.createTextNode((nfiles+1)+". "); mainNod.appendChild(nod); nod = d.createElement("input"); nod.type = "text"; nod.setAttribute("name", "question"+nfiles); nod.setAttribute("class", "competitionformtext"); //css style class for text nod.setAttribute("style", "width:290px;height:12px;margin-top:3px;"); nod.setAttribute("maxlength", "255"); mainNod.appendChild(nod); return false;
<input type="file"> kan næsten ikke styles - og mindre i FF end i IE - det kan du ikke gøre noget ved. Desuden ser det også rigtig skidt ud i IE at sætte en højde på 12px :)
Hehe ... jeg må vist til at læse lidt bedre :) Prøv at sætte de enkelte style-properties: nod.style.width = "200px"; nod.style.height = "12px"; ... osv
yups ... det gælder for alle style-properties, der i CSS indeholder en bindestreg. Den udelades i JS, hvor der i stedet anvendes i 'camelCase': z-index => zIndex border-width => borderWidth ... osv ;o)
Her er den endelige løsning: ------------------------------------------------------------ <script language="JavaScript" type="text/JavaScript"> //add text field var nfiles = 0; function Expand() { if (nfiles < 6)//giver max 7 text felter { var f, mainNod, nod, d=document; f = d.getElementById("fields"); nfiles++; mainNod = d.createElement("div"); f.appendChild(mainNod); nod = d.createTextNode((nfiles+1)+". "); mainNod.appendChild(nod); nod = d.createElement("input"); nod.type = "text"; nod.setAttribute("name", "question"+nfiles); nod.setAttribute("class", "competitionformtext"); //css style class for text nod.setAttribute("style", "width:290px;height:12px;margin-top:3px;"); nod.style.fontFamily = "tahoma, helvetica, arial, verdana, sans-serif"; nod.style.fontSize = "11px"; nod.style.color = "#555555"; nod.style.width = "289px"; nod.style.height = "12px"; nod.style.marginTop = "3px"; nod.style.paddingLeft = "3px"; nod.setAttribute("maxlength", "255"); mainNod.appendChild(nod); return false; } else { alert('Beklager, ikke plads til flere svarmuligheder'); } } //remove text field function Remove() { if (nfiles != 0) { var f, aDivs, d=document; f = d.getElementById("fields"); aDivs = f.getElementsByTagName("DIV"); if (aDivs.length<1) return; f.removeChild( aDivs[aDivs.length-1] ); nfiles--; } else { alert('Beklager, du kan ikke fjerne det sidste felt.'); } } </script> ------------------------------------------------------------
Til at kalde scriptet med: ------------------------------------------------------------ <a href="#" onclick="Remove()">--</a>/<a href="#" onclick="Expand()">++</a> ------------------------------------------------------------
Yups ... lige et par tips: Click-event'en på et link fyres af lige før linket afvikler sideskiftet, der er defineret af dets href. Returnerer du false i din onclick-handler, undgår du, at linket 'navigerer'. Nogle browsere har det med at springe til top, når man klikker på et link med en 'havelåge' i href'en - og det undgår du med: <a href="#" onclick="Remove();return false">--</a>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.