15. november 2001 - 10:26Der er
83 kommentarer og 2 løsninger
Ændre linies farve ved kryds i checkbox (ligesom hotmail)
Jeg er ikke så god til javascript endnu .. men jeg ville gerne lave en funktion der ændrer liniens farve ligesom på hotmail .. den skal virke i IE4+ og NS4+
<ole> ...eller du kunne forklare mere præcist, hvad du vil lave. Ikke alle har en HotMail-adresse - og de, der ikke har, opretter nok ikke en for at hjælpe dig ;o) /mvh </bole>
Jeg har bare det problem at når jeg vil vælge alle med en anden checkbox så virker det ikke .. hvis du kan bikse kode sammen til det vil jeg gi\' 30 point ekstra ..
Virker det forresten på alle browsere (IE og NS) fra version 4 ??
Hvis du laver det, Nikolaj - så skal jeg nok skrive: \"Gør, som nikolajdu skriver...\"! Det går jo ikke, du allerede kommer ud af den nyvundne vane =oD /mvh
function CCA(CB){ if (CB.checked) hL(CB); else dL(CB); var TB=TO=0; for (var i=0;i<frm.elements.length;i++) { var e = frm.elements[i]; if ((e.name != \'allbox\') && (e.type==\'checkbox\')) { TB++; if (e.checked) TO++; } } if (TO==TB) frm.allbox.checked=true; else frm.allbox.checked=false; }
function hL(E){ if (ie) { while (E.tagName!=\"TR\") {E=E.parentElement;} } else { while (E.tagName!=\"TR\") {E=E.parentNode;} } E.className = \"H\"; } function dL(E){ if (ie) { while (E.tagName!=\"TR\") {E=E.parentElement;} } else { while (E.tagName!=\"TR\") {E=E.parentNode;} } E.className = \"\"; }
Kan man lave det så det virker på IE5+ og NS5+, men at den bare ikke gør andet end at sætte et kryds hvis man har IE4 og NS4 .. ikke nogle fejlmeddelser ??
Hvad med den der markere alle sammen .. nogen løsning til den ??
Jeg har denne kode:
function CheckAll() { for (var i=0;i<document.TW_DEFAULT_FORM.elements.length;i++) { var e = document.TW_DEFAULT_FORM.elements[i]; if ((e.name != \'TW_DEFAULT_CHECKALL\') && (e.type==\'checkbox\')) e.checked = document.TW_DEFAULT_FORM.TW_DEFAULT_CHECKALL.checked; } }
for (i=0;i<document.f.elements.length;i++){ if (document.f.elements.typeOf=\"checkbox\"){ temp++ } hvorMangeBoxe = temp }
}
function marker(box){
if (box.checked==true){
for (i=0;i<hvorMangeBoxe;i++) eval(\'document.f.box\'+i+\'.checked=true;\'); }else{ for (i=0;i<hvorMangeBoxe;i++) eval(\'document.f.box\'+i+\'.checked=false;\'); }
if (ie5&&box.checked==true){
for (i=0;i<hvorMangeBoxe;i++) eval(\"document.getElementById(\'linie\"+i+\"\').style.backgroundColor=\'#dddddd\';\"); }else{
for (i=0;i<hvorMangeBoxe;i++) eval(\"document.getElementById(\'linie\"+i+\"\').style.backgroundColor=\'#999999\';\");
for (i=0;i<document.f.elements.length;i++){ if (document.f.elements.typeOf=\"checkbox\"){ temp++ } hvorMangeBoxe = temp }
}
function marker(box){
if (box.checked==true){
for (i=0;i<hvorMangeBoxe;i++) eval(\'document.f.box\'+i+\'.checked=true;\'); }else{ for (i=0;i<hvorMangeBoxe;i++) eval(\'document.f.box\'+i+\'.checked=false;\'); }
if (ie5&&box.checked==true){
for (i=0;i<hvorMangeBoxe;i++) eval(\"document.getElementById(\'linie\"+i+\"\').style.backgroundColor=\'#dddddd\';\"); }else{
for (i=0;i<hvorMangeBoxe;i++) eval(\"document.getElementById(\'linie\"+i+\"\').style.backgroundColor=\'#999999\';\");
Det bliver nikolajdu\'s løsning jeg bruger mest af .. så han skal nok have mest... men indtil nu er det kun nute og nukolaj der har svaret .. kom med nogle bud på hvordan pointne skal deles ;-)
Du kan i øvrigt sagtens fjerne disse to linie, da vi alligevel ikke bruger dem. tjekket går kun på getElementbyId, der understøttes af IE 5 og frem og NS 6.x
Jeg kan heller ikke slette mere .. før havde alle mine checkboxs et navn og når jeg submittede kunne jeg så spilte en streng med tal (1,2,3) og slette de beskeder.
Da jeg sagde at i kunne sende screenshots til eksperten@melanders.dk mente jeg ikke 6 MB store filer .. det var det noget der kunne få min Outlook Express til at gå ned .. men tak alligevel .. en anden kunne man bruge komprimereing ;-)
Jeg lavede javasriptet om så jeg ikke behøver at bruge BODYens ONLOAD da det er mest praktisk for mig ... Her er koden til javascriptet:
<SCRIPT> <!--
ie5 =(document.getElementById)? true:false
function CheckAll(box){ for (var i=0;i<document.TW_DEFAULT_FORM.elements.length;i++){ var e = document.TW_DEFAULT_FORM.elements[i]; if ((e.name != \'TW_DEFAULT_CHECKBOX_0\') && (e.type==\'checkbox\')){ if (document.TW_DEFAULT_FORM.TW_DEFAULT_CHECKBOX_0.checked==true){ e.checked=true; }else{ e.checked=false; } if (ie5){ if (document.TW_DEFAULT_FORM.TW_DEFAULT_CHECKBOX_0.checked==true){ document.getElementById(\'line\'+e.value).style.backgroundColor=\'#FFFDAC\'; }else{ document.getElementById(\'line\'+e.value).style.backgroundColor=\'#FFFFFF\'; } } } } }
function Check(e,line){ if (ie5==true){ if (e.checked==true){ document.getElementById(line).style.backgroundColor=\"#FFFDAC\" }else{ document.getElementById(line).style.backgroundColor=\"#FFFFFF\" } } }
//--> </SCRIPT>
Det kunne sikkert forbedres en del (nu er javascript ikke lige det jeg har mest erfaring med, den er næsten lig nul). Jeg håber at I gider kikke på det.
HTML-koden ser nu således ud (jeg har ændret koden til TR fra TD .. og alle checkbokse har samme ID) ..
hvorfor ikke .. når jeg submitter formen kan jeg bruge denne asp-kode til at se værdien for alle checkboxe:
If Request.Form(\"TW_DEFAULT_SUBMIT\") <> \"\" Then If Request.Form(\"TW_DEFAULT_SELECT\") <> \"\" Then myString = Request.Form(\"TW_DEFAULT_SELECT\") myArray = Split(myString,\", \")
For Each myItem in myArray pop3.DeleteSingleMessage myItem Next
Response.Redirect(\"default.asp\") End If End If
da de afkrydsede bokses value bliver adskildt af komma (1,5,6,7)
Funktionenen CheckAll() behøver ikke have parameteren box da jeg ikke bruger den .. så den har jeg fjernet .. Andre forslag til forbedringer ??
psst psst. NS 4.x er slet ikke glad for at bruge underscore _ i navn, du bliver nok nødt til at lave dem om. Personligt synes jeg også det ser rodet ud med dine store bogstaver, men hver sin smag.
I selve ordet ID ligger det at det er unikt og så skal de selvfølgelig have forskellige navne. Du skal være glad for Ole ikke ser dine boxe have samme ID, så havde du oplevet hans speciale - Nepalesiske cykelslangetæsk.
Lav din ASP om så den passer i idéen med den version jeg havde lavet. Der havde alle boxe et unikt navn. Det kjan godt være du ikke kan se hvorfor nu, men hvorfor lave fejl fra starten af?? ;-)
jeg er PISSETRÆT av at eksperten spiser mine innlegg noen ganger...spesielt når jeg har brukt litt tid på å skrive dem. Well her kommer kun et sammendrag av det som forsvant:
det er ikke god kodeskikk å navngi flere elementer med samme navn. Man behøver ikke tenke lenger enn å forestille seg en skoleklasse med 30 elever som har samme navn...litt vanskelig å holde styr på ?!
underscores bør fjernes, benytt heller en kombinasjon av små og store bokstaver. Det er fullstendig normalt...kall alle dine checkboxes
twDefaultCheckbox
etterfulgt av et ID:
twDefaultCheckbox21
deretter kan du skrive om din metode til:
function CheckAll(box){ for (var i=0;i<document.TW_DEFAULT_FORM.elements.length;i++){ var e = document.TW_DEFAULT_FORM.elements[i]; if (( e.name.indexOf(\'twDefaultCheckbox\') > 0 ) && (e.type==\'checkbox\')){ if ( e.checked==true){ e.checked=true; ie5?document.getElementById(\'line\'+e.value).style.backgroundColor=\'#FFFDAC\':void(0); }else{ e.checked=false; ie5?document.getElementById(\'line\'+e.value).style.backgroundColor=\'#FFFFFF\':void(0); } } } }
nute > den der e.name.indexOf(\'twDefaultCheckbox\') .. Hvad gør den .. Siger den at den skal tage alle der begynder med twDefaultCheckbox unanset hvilket nummer .. og hvis den begynder med noget andet skal den slet ikke tages ??
for det første...hvis du ser på dine checboxer, så vil du se at ID ikke er lik NAME (kikk i kildekoden etter at siden er generert). Du mangler bare å fjerne et feilplassert asp-end tag...
for det andre...så har jeg jo selvfølgelig gjort en liten feil :-(
bytt ut denne linje:
if (( e.name.indexOf(\'twDefaultCheckbox\') > 0 ) && (e.type==\'checkbox\')){
med denne:
if (( e.name.indexOf(\'twDefaultCheckbox\') > -1 ) && (e.type==\'checkbox\')){
tja...siden dette er et javascript forum, så skal man vel strengt tatt kun poste relevante spørsmål her inne...jeg foreslår at du oppretter et nytt...
om vi vil ha flere poeng ?? nææ...for min del er det ok, selve koden var jo ikke s¨å vanskelig...vi skulle bare gjennomgå den etpar ganger for å få den til å gjøre det vi trodde vi gjorde :-)
Jeg har et sidste (jeg mener det den her gang ;-)) spørgsmål: Hvis jeg ville lave en knap som markere alle checkbokse istedet for at bruge en anden checkboks, hvad gør jeg så ??
Tak for al jeres hjælp .. jeg tror jeg er HELT færdig nu ..
Jeg håber at jeg kan hjælpe jer en anden gang :-)
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.