Avatar billede showsource Seniormester
22. februar 2015 - 18:00 Der er 8 kommentarer og
1 løsning

Ændre en var tilbage til null

Hej
Roder med noget vagtplan script med php og mysql, og ja, javascript.
I den forbindelse definerer jeg en var,

var rowref=null;

Bruger den til slette/opdatere et row i db.
F.eks. kan jeg klikke på et navn for at slette eller ændre navn til den givne vagt.

onclick="java script:rowref='værdi';

Ved onclick vises en div som ellers er hidden.
Her kan jeg klikke på "luk", hvis jeg ikke vil noget.
Fint nok, men rowref vedbliver at være defineret som ved "åben div"

En onclick="java script:rowref=null; ved klik på luk virker ikke.
Og en:
rowref=null;
i min "luk_div" function virker heller ikke.

Hvordan får jeg rowref tilbage til null ?
( udover reload af siden! )
Avatar billede Slater Ekspert
22. februar 2015 - 18:50 #1
Hvis du har kørt rowref=null; så er rowref null. Det kan ikke være problemet. Enten bliver det ikke udført eller også er det ikke nok at den er null.

Vi skal nok se mere kode for at sige mere end det.
Avatar billede showsource Seniormester
22. februar 2015 - 19:16 #2
Hmm, jeg har en onclick for at vise en div.

<span class="hand" onclick="java script:rowref=10;show_div('divid');">Tekst</span>

"10" kommer dynamisk med php ved output

I min div, divid, har jeg en luk funktion hvis man ikke vil noget.

<span class="hand" onclick="close_div('divid');">Luk</span>


I min close_div() har jeg som det første:

rowref = null;


Og ja, rowref defineres som en var som første i javascriptet.


rowref=null;

function close_div() {
rowref=null;
......
}

o.s.v.
Avatar billede showsource Seniormester
22. februar 2015 - 19:24 #3
Hmm, måske hvis jeg i show_div() også tilføjer værdien for rowref ???
Altså rowref defineres i funktionen.

Skal godt nok lige lave noget mad, så er først tilbage om 30-40 min.
Avatar billede showsource Seniormester
22. februar 2015 - 20:33 #4
Njahh, har lige siddet og kikket på min js-kode.

Skal vist bare "starte forfra", altså få muget ud af div. overflødigheder.

Men ikke lige i dag.
Avatar billede showsource Seniormester
23. februar 2015 - 05:37 #5
Nå, problemet er ikke at få rowref til null
( jeg er ikke nogen hak, keg prøver mig frem :) )

Har en div som fra start er hidden:

<div id="editvagt" class="hidediv" style="width: 320px;">
    <div style="font-size: 1.2em;">
    Rediger vagt <span id="vagtdag"> </span>
    </div>

<form action="" method="post" style="display: inline;" id="rediger_vagt_tid">
<input type="hidden" name="inc_var" value="rediger_vagt">
<input type="hidden" name="rediger_id" value="" id="vagtref">

    <div style="margin: 16px;">
    Slet <span id="edit_navn"></span>'s vagt kl. <span id="edit_tid"> </span>? <span class="tnavn" onclick="delete_db_row('rediger_vagt_tid');">Slet</span>
    </div>

    <div>
    eller vælg en anden
    <select name="tjener_navn">
    <option value="">Tjener:</option>
    <option value="3" id="navn_3">Anne</option>
    <option value="1" id="navn_1">Thomas</option>
    <option value="2" id="navn_2">Mark</option>
    </select> &nbsp; <input type="submit" class="submit" value="Opdater vagt" name="update_vagt">
    </div>
   
    <div style="margin-top: 16px; text-align: center;">
    <span class="tnavn" onclick="close_div('editvagt');">ANNULLER</span>
    </div>

    </form>

</div>

Ved visning af vagtplan, kan man klikke på et navn som den vagttid:

<span style="color: #00CC33;" id="v_7" class="curs" onclick="java script:rowref=7;rediger_vagt('Mark','Onsdag d. 25/02','11-19','2','7');">Mark</span>

Og "rediger_vagt()" ser så'n ud:

function rediger_vagt(navn,dato,kl,navnref,edit_id) {

var refdato = get_id('vagtdag');
var refnavn = get_id('edit_navn');
var reftid = get_id('edit_tid');
var ref_id = get_id('vagtref');

ref_id.value = rowref;

  while(refdato.firstChild) {
    refdato.removeChild(refdato.firstChild);
    }
   
var sText = document.createTextNode(dato);
refdato.appendChild(sText);

  while(refnavn.firstChild) {
    refnavn.removeChild(refnavn.firstChild);
    }
   
var nText = document.createTextNode(navn);
refnavn.appendChild(nText);

  while(reftid.firstChild) {
    reftid.removeChild(reftid.firstChild);
    }
   
var tText = document.createTextNode(kl);
reftid.appendChild(tText);

    formref = get_id('navn_'+navnref);
    formref.disabled = true;
   
var oShadow = get_id('v_'+edit_id);

var oP = getPos(oShadow); // Find 'skygge elementets' placering

var vagtdiv = get_id('editvagt');

var css = vagtdiv.style;
    css.left = (oP.x+20) + 'px';
    css.top = (oP.y-160) + 'px';

show_div('editvagt');
rowref = ref_id.value;

}


Mit bøvl er at jeg disabler option på den som har vagten.
Lukker jeg div uden ændringer, og åbner igen, men for en anden vagt, er den option stadig disabled og selvf. også den nye.

Det er vel noget med at lave en var, som ved luk af div bruges til at enable option ?

Har ikke tid til noget lige nu, må blive en gang i eftermiddag/aften
Avatar billede showsource Seniormester
23. februar 2015 - 06:06 #6
Nåh, det er sgutte nemt at slippe tastaturet når først man er i gang !!!

var backref = null;

i starten af scriptet.

Sidst i rediger_vagt() bruger jeg så:

backref = navnref;

og så en function, tilbage() i scriptet:

function tilbage() {
    formref = get_id('navn_'+backref);
    formref.disabled = false;
}

Og ved klik for at lukke div,
close_div('editvagt');tilbage();

Umiddelbart virker skidtet !
Avatar billede showsource Seniormester
26. februar 2015 - 19:24 #7
Viperine:
Kan du fortælle mig hvorfor "rowref" kan blive til null i min rediger_vagt() funktion ?

Definerer rowref i start af script.
Nå jeg så bruger onclick, javascript=rowref=10;rediger_vagt(****);

og i regdiger_vagt() har
ref_id.value = rowref;

er jeg nødt til at bruge:
rowref = ref_id.value;
selvom det virker tåbeligt i min verden.
Ved du hvorfor ???
Hvis ikke jeg har har:
rowref = ref_id.value;
kommer der null ved post ?

( Og spm. her skal jo også lukkes )
Avatar billede showsource Seniormester
26. februar 2015 - 19:47 #8
Hmm, bruger denne til at lave et hiddenfelt og poste for at delete et row i db,

function delete_db_row(formid,tekst) {

var ref = get_id(formid);

    if(ref) {

    var tex = (!tekst ? 'Er du sikker på du vil slette ?' : tekst);

        if(confirm(tex)) {
   
        try {

        postElement=document.createElement('<input type="hidden" name="delete_rowid" value="'+rowref+'">');

        } catch (e) {

            try {

            postElement=document.createElement("input");
            postElement.setAttribute("name", "delete_rowid");
            postElement.setAttribute("type", "hidden");
            postElement.setAttribute("value", rowref);

                } catch (e) {

                alert('Browser is Not Supported !!!');
                return false;

                }
            }
       
        ref.appendChild(postElement);
        ref.submit();
        }

    }
   
}
Avatar billede showsource Seniormester
27. marts 2015 - 18:21 #9
Lukker.
Og skal lige kikke kode så jeg kan poste kode til et nyt spm.
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