Avatar billede sw_red_6 Nybegynder
31. august 2009 - 16:08 Der er 13 kommentarer

generiske funktioner og udvidelse af disse..

jeg har disse 2 funktioner:
function basicCheckBox(CBEl, QID, OID) {
  var InpEl = document.getElementById(QID+'_value');
  if(InpEl.value.indexOf(','+ OID +',') == -1) {
    CBEL.src = 'images/cB_1.gif';
    InpEl.value += OID+',';
  } else {
    CBEL.src = 'images/cB_0.gif';
    InpEl.value = InpEl.value.replace(','+ OID +',', ',');
  }
}

og
function selectResponsCB(objCheckBox, strQuestionID, strOptionID, strInitial) {
    var objElement=document.getElementById(strQuestionID+'_value');
    if (objElement.value.indexOf(',' + strOptionID + ',') == -1) {
        objCheckBox.src =  'images/enabled_1.gif';
        objElement.value =objElement.value + strOptionID + ',';
    if(document.getElementById('responsibleInitials').value == '') {
      document.getElementById('responsibleInitials').value+=strInitial;
    } else {
      document.getElementById('responsibleInitials').value+=','+strInitial;
    }
    } else {
        objCheckBox.src =  'images/enabled_0.gif';
        objElement.value = objElement.value.replace(',' + strOptionID + ',', ',');
    if(document.getElementById('Responsible_value').value==",") {
      alert("Der er ikke nogen ansvarlige for denne opgave");
      objCheckBox.src =  'images/enabled_1.gif';
      objElement.value =objElement.value + strOptionID + ',';
      return false;
    }
    }
  saveAction();
}

De er meget ens, men er det muligt at omskrive dem så den anden funktion 'udvider' den første med de ekstra ting som den skal bruge, i stedet for at have 2 næsten ens funktioner i samme dokument?
Avatar billede olebole Juniormester
31. august 2009 - 16:33 #1
<ole>

Bare et spørgsmål: Ville det ikke være lettere at arbejde med nogle arrays, som man så til sidst join'er over et komma og fylder i et hidden field?

/mvh
</bole>
Avatar billede sw_red_6 Nybegynder
31. august 2009 - 16:51 #2
Sandsynligvis, jeg har ikke kigget så meget på den slags forbedringer endnu..
Det jeg, til at starte med, godt ville have var en grundlæggende funktion som kunne udvides når og hvis det blev aktuelt, om den ser ud som den gør nu eller om det er med arrays er underordnet i den sammenhæng.. skulle jeg mene...
Avatar billede sw_red_6 Nybegynder
03. september 2009 - 14:27 #3
hmm, hvis det skulle laves med et array skulle det array så ikke være globalt og er det ikke normalt noget skidt..?
Avatar billede olebole Juniormester
03. september 2009 - 22:23 #4
Når du i forvejen bruger globale funktioner, skader en global variabel eller to nok ikke. Jeg ved godt, der er en del kodere, der nærmest får angstanfald, når de ser en global variabel, men det er ret sjældent, de kan begrunde frygten - og man bør generelt ikke frygte noget alene fordi, andre frygter det  ;o)

Hvis du endelig insisterer, kan du jo bare klistre variablen fast på et af funktions objekterne. Jeg synes personligt ikke, det er kønnere, men ... different strokes for different folks  =)

basicCheckBox.myArray = [];
Avatar billede sw_red_6 Nybegynder
04. september 2009 - 08:55 #5
jeg har læst lidt forskellige steder og har faktisk fundet ud af at javascript mere eller mindre afhænger af variabler i det globale scope, så det går nok..

Har du et forslag til hvordan jeg kan lave det jeg spørger om i det originale spørgsmål
Avatar billede olebole Juniormester
04. september 2009 - 13:34 #6
Nej, for jeg har ingen anelse om, hvad de gør og/eller hvorfor. Jeg kunne blot se, du rodede med noget kommasepareret streng i et hidden field
Avatar billede sw_red_6 Nybegynder
04. september 2009 - 14:56 #7
hvorfor: Der er taget en beslutning om at de alm. checkboxe ikke er gode nok så de er blevet skiftet ud med billeder..

De 2 funktioner skifter så src på billederne og skriver en id i et hidden input felt.

Den nederste skal så yderligere skrive nogle initialer i et andet hidden input felt
Avatar billede olebole Juniormester
05. september 2009 - 15:52 #8
Ja, det ved jeg altsammen  =)
Avatar billede sw_red_6 Nybegynder
07. september 2009 - 09:13 #9
ok.. hvad er det så du ikke ved?
Avatar billede sw_red_6 Nybegynder
10. september 2009 - 15:54 #10
Du skriver at jeg bruger globale funktioner, hvilket jeg ikke vil benægte, men hvad er alternativet?
Avatar billede olebole Juniormester
10. september 2009 - 21:16 #11
Alternativet til procedural kode er objekt orienteret kode. Jeg er stadig ikke med på, hvordan du har tænkt brugen af funktionerne
Avatar billede sw_red_6 Nybegynder
11. september 2009 - 13:52 #12
ahh, de skal sættes på onclick-eventet på billederne så de bliver kaldt hver gang der trykkes på et.. eller misforstår jeg stadig hvad du er efter?

Har du et link el. lign. så jeg kan læse noget om OO i javascript? Det er vidst lidt for omfattende et emne at forklare her..
Avatar billede sw_red_6 Nybegynder
23. september 2009 - 14:33 #13
hmm er der forsvundet en mail i mængden olebole..? eller er det eksperten som har smidt den forkert..?
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester