24. september 2004 - 17:25Der er
13 kommentarer og 1 løsning
Jeg vil vælge alle i en select.
Hej, jeg har dette script og jeg vil gerne lave en knap og et ekstra script, som kan vælge alle på en gang!
function copy_placeid(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); } }
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; }
Der er tale om at man vælger i en selectbox og så smider javascript det over i en anden selectbox. Senere bliver der så lavet en tekststreng hvor value'erne bliver sat ind i en række med ¤ imellem hver, men det er en længere historie!
Så når jeg skriver 'vælge alle', så mener jeg mere præcist at flytte alle over i den anden selectbox. derfor funktion(fra_selectname,til_selectname)
Her er lidt af mit kode: (kortet gevaldigt ned!) <span class="littlesmaller" onClick="copy_all_placeid(placeid_at_vaelge,viser_valgte_placeid)" style="cursor:hand">alle</span>
Jeg havde tænkt at man kan benytte dette og bare ændre lidt, så den flytter alle options i stedet for den/de valgte options:
function copy_all_placeid(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); } }
Er det ik bare noget med at skrive '.all' et sted eller måske ændre i denne: for (var i=0, l=fromObject.options.length;i<l;i++)
eller i denne: for (var i=fromObject.options.length-1;i>-1;i--)
// først vælges alle i fromObject! var opts = document.fromObject.options for ( i=0; i<opts.length; i++ ) { opts[i].selected = true; }
// De er alle valgt og flyttes nu! 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); } }
Men der er helt sikkert fejl i det jeg har lavet herover... Jeg er ik så god til det endnu :o)
function copy_all_placeid(fromObject,toObject){ for (var i=0, l=fromObject.options.length;i<l;i++) { addOption(toObject,fromObject.options[i].text,fromObject.options[i].value); } for (var i=fromObject.options.length-1;i>-1;i--) { deleteOption(fromObject,i); }
Øh, jeg tror ik det virker, for det er fuldstændig magen til det originale!
Den vælger kun én linie! og jeg vil gerne vælge/flytte alle linier på én gang!
Derfor tænkte jeg at sætte dette ind måske: // Der vælges alle i fromObject! var opts = document.fromObject.options for ( i=0; i<opts.length; i++ ) { opts[i].selected = true; }
Men jeg forstår ik rigtigt at tilpasse det!
lidt som her: function copy_all_placeid(fromObject,toObject){
var opts = document.fromObject.options for ( i=0; i<opts.length; i++ ) { opts[i].selected = true; }
for (var i=0, l=fromObject.options.length;i<l;i++) { addOption(toObject,fromObject.options[i].text,fromObject.options[i].value); } for (var i=fromObject.options.length-1;i>-1;i--) { deleteOption(fromObject,i); }
}
Kan det lade sig gøre? Eller skal jeg gøre noget helt andet?
-- og så må du jo til at rode lidt rundt i Fri debat, Sitevurdering m.m. for at få samlet nogle point sammen (se en rimelig god liste her: http://expfaq.1go.dk/?id=32#ikke_flere_point !-)
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.