Her er den kode jeg har nu: ------- function deleteOption(object,index) { object.options[index] = null; }
function addOption(object,text,value) { var defaultSelected = true; var selected = true; var optionName = new Option(text, value, defaultSelected, selected) object.options[object.length] = optionName; }
function copySelected(fromObject,toObject) { for (var i=0, l=fromObject.options.length;i<l;i++) { if (fromObject.options[i].selected) addOption(toObject,fromObject.options[i].text,fromObject.options[i].value); } for (var i=fromObject.options.length-1;i>-1;i--) { if (fromObject.options[i].selected) deleteOption(fromObject,i); } }
De fleste virksomheder har efterhånden bevist, at AI virker.
Pilotprojekter leverer resultater. Medarbejdere bruger generative AI-værktøjer. Nye use cases dukker op på tværs af organisationen.
Pas på, når du læser W3C's rekommendationer: ID er i den terminologi ikke det samme som id. Det samme gælder NAME og name ;o)
Til gengæld kan JavaScript ikke uden videre behandle brackets, så disse er en rigtig skidt ting at bruge ... uagtet de kan være smarte i PHP :) Man kan altid lave 'hovsa-hacks' - men det er og bliver noget skrammel.
PS: NAME og ID er - ligesom CDATA - definitioner af tegnsæt. Der, hvor man ser, hvad der er tilladelige tegn, er ved elementets beskrivelse. Nogle attributter skal angives med tegn fra NAME-sættet, andre fra ID - eller CDATA
=maddog= >> Du vil sagtens kunne finde spm. på E, hvor jeg argumenterer på samme måde som du. Jeg er imidlertid blevet klogere - bl.a. efter korrespondence med W3C ;o) /mvh
Kikker du derimod på globale elementer (ikke form-elementer, men f.eks. div og span), kan du se, at deres id _ikke_ må indeholde '[]', da disse skal formateres med NAME-sættet (det er en fejl, det står stavet med små bogstaver): http://www.w3.org/TR/html401/struct/global.html#adef-id
jamen jeg bliver klogere dag for dag. det er nu ikke kun mig der har fået den opfattelse at name skal være alphanumerisk http://www.blooberry.com/indexdot/html/tagpages/s/select.htm der egentlig er en meget god site siger det også. I dette tilfælde er det virkelig problematisk i Javascript fordi man ikke kan lave en reél objekt pointer som arr["name"] = "OleBole"; // hvor arr er et array alert(arr.name); arr["name[]"] = "OleBole"; alert(arr.name[]); // her får vi Syntax Error der ikke kan gribes run-time med try-catch.
Problemet i eksemplet er i virkeligheden, at du blander objekter og associative arrays sammen.
I de fleste tilfælde opfører et associativt array sig som et objekt i JS - men ikke altid! Det betyder, at man som oftest kan hente et array-element ud af et associativt array, somom det var et objekt (altså med dot-notation).
I dette tilfælde skal man holde tungen lige i munden og huske, der er tale om et associativt array - og hente det med array-notation:
var arr = new Array(); arr["name"] = "OleBole"; // hvor arr er et array alert(arr.name); arr["name[]"] = "OleBole"; alert(arr["name[]"]);
Det er præcis det samme med et form-element. Du kan ikke hente et element med brackets i name med: document.FORMNAVN.bla[]; eller: document.FORMNAVN.elements.bla[]; Men skal bruge: document.FORMNAVN.elements["bla[]"];
sandt nok. af en eller anden grund vælger jeg altid at traversere med pointere. Sikkert i en objekt-orienteret rus så koden kan "genbruges" med andet en et-niveau arrays. Jeg er ikke dygtig nok til javascript til ikke at kode det objekt-orienteret.
Det er heller ikke altid let, når JavaScript er så 'tilgivende', som det jo er. Det er ikke så smart, når typer bliver så frit fortolket ... så kommer man let til at lave fejl. Det er noget helt andet med programmeringssprog ... de er som oftest meget mere strikse. Til gengæld er JavaScript dejlig let at komme igang med - netop fordi det er så løst :)
=maddog= >> Jeg er glad for, du var 'til besvær'. Så fik vi nemlig en anledning til at diskutere og klarlægge nogle vigtige punkter, der meget tit bliver misforstået ... det er _altid_ velgørende ;o) /mvh
javascript er et godt sted at starte - helt bestemt. Ikke blot er det meget tilgivende som du siger, men det kan både programmeres lineært, funktions-orienteret og objekt-orienteret. På den måde kan man bevæge sig et skridt "op" uden at skifte sprog. Javascript lider desværre af det samme kompleks som Java - nul dekonstruktor. Jeg har endnu ikke kunnet afgøre om en null værdi automatisk frigør resourcer (altså om myObject = new VeryBigDOMObject("using tons of resources"); myObject =null; faktisk frigør resourcerne), fordi man ikke programelt har adgang til en garbage collector og jeg derfor ikke kan afgøre hvilket strategi run-time kompileren anvender.
(Ups. Det blev lidt længere og dybere end tiltænkt. Ville egentlig bare have skrevet "Javascript lider desværre af det samme kompleks som Java - nul dekonstruktor."!)
Hehe ....... JavaScript's garbage collection er ikke sådan at rode med. Da JS jo er et klient-sprog, er dets garbage collection desværre også browserafhængig :oP En nærmere diskussion af emnet vil fylde rigtig meget, så det bliver ikke her ;o) /mvh
Jeg siger siger mange tak for svarene og jeres debat. Jeg har nu fået det til at virke og det er jeg glad for :-) Det hjalp med: onclick="copySelected(this.form.elements['select2[]'],this.form.elements['select1[]'])"
OleBole> indeed. derfor men "Ups". Jeg samler materiale sammen og tager løbende noter og forsøger desuden at sætte nogle (egne) konventioner for min kode. Når bægeret er fuldt laver jeg sikert et mega 200pts spørgsmål hvor erfaringer forhåbenligt kan udveksles.
theboy >> Tak for points ... det glæder mig, vi også fik løst dit oprindelige problem ;oD
=maddog= >> Det ser jeg frem til. Det er dejligt en sjælden gang imellem at få de mere langhårede emner frem i lyset her på E :) /mvh
Synes godt om
Ny brugerNybegynder
Din løsning...
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.