Discussion:
Fjerne et link når det er brugt
(for gammel til at besvare)
Bertel Lund Hansen
2013-05-25 09:35:08 UTC
Permalink
Hej allesammen

Jeg har et link på en (intern) side som jeg gerne vil have
forsvinder når det er blevet klikket på. Kan man ikke lave det
med JavaScript?

Jeg vil også godt have en løsning på hvordan det kan bringes frem
igen.

Det drejer sig om en fil der genereres serverside, og som kun må
hentes én gang. Når der sker ændringer, skal filen genereres
igen, og så skal linket dukke op igen.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Jens Peter Karlsen
2013-05-25 12:17:04 UTC
Permalink
Sæt en cookie der siger om det skal vises eller ej.

Regards Jens Peter Karlsen.

On Sat, 25 May 2013 11:35:08 +0200, Bertel Lund Hansen
Post by Bertel Lund Hansen
Jeg har et link på en (intern) side som jeg gerne vil have
forsvinder når det er blevet klikket på. Kan man ikke lave det
med JavaScript?
Bertel Lund Hansen
2013-05-25 12:51:21 UTC
Permalink
Post by Jens Peter Karlsen
Sæt en cookie der siger om det skal vises eller ej.
Hvordan kan det fjerne linket når der er klikket på det?
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Jens Peter Karlsen
2013-05-27 13:24:04 UTC
Permalink
Ved klik sættes display hidden på linket. Ved nyt besøg læs cookien og
sæt display til hidden hvis den er sat.

Regards Jens Peter Karlsen.

On Sat, 25 May 2013 14:51:21 +0200, Bertel Lund Hansen
Post by Bertel Lund Hansen
Hvordan kan det fjerne linket når der er klikket på det?
Bertel Lund Hansen
2013-05-28 22:47:08 UTC
Permalink
Post by Jens Peter Karlsen
Ved klik sættes display hidden på linket. Ved nyt besøg læs cookien og
sæt display til hidden hvis den er sat.
Du har ikke helt forstået problematikken.

Jeg har en side som viser data samt en masse formularfelter med
flere data. Hvis jeg ændrer i felterne, kan jeg klikke på kanppen
"Husk ændringer". Det fjerner linket til de zippede filer, fordi
pakkens indhold nu er forældet. Det er nemt nok.

Så kan jeg klikke på "Zip filerne". Det pakker de opdaterede
filer og bringer linket frem igen. Det er også nemt nok.

Når jeg klikker på linket, bliver filerne hentet ned på min pc.
Somme tider sker det at jeg klikker to gange. Jeg blander links
sammen med Windows' genveje (som skal dobbelklikkes). Derved får
jeg to forskellige udgaver af den samme zipfil, og det er det
mini-irritationsmoment jeg gerne vil fjerne.

Hvis jeg lukker siden og åbner den igen, er linket altid væk, så
der er ikke brug for at aflæse nogen status. Filerne er jo pr.
definition uændrede når siden lige er blevet åbnet.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Karl Erik Christensen
2013-05-29 02:12:24 UTC
Permalink
Post by Jens Peter Karlsen
Ved klik sættes display hidden på linket. Ved nyt besøg læs cookien og
sæt display til hidden hvis den er sat.
Regards Jens Peter Karlsen.
On Sat, 25 May 2013 14:51:21 +0200, Bertel Lund Hansen
Post by Bertel Lund Hansen
Hvordan kan det fjerne linket når der er klikket på det?
onclick="this.disabled=true;

Karl Erik.
--
http://dmwebdesign.dk/karlerik/
Birger Sørensen
2013-05-25 12:59:08 UTC
Permalink
Post by Bertel Lund Hansen
Hej allesammen
Jeg har et link på en (intern) side som jeg gerne vil have
forsvinder når det er blevet klikket på. Kan man ikke lave det
med JavaScript?
Jeg vil også godt have en løsning på hvordan det kan bringes frem
igen.
Det drejer sig om en fil der genereres serverside, og som kun må
hentes én gang. Når der sker ændringer, skal filen genereres
igen, og så skal linket dukke op igen.
Hvordan registrer du at der er klikket på linket?
Normalt vil et link hente en ny side, og dit script er væk (eller
startet forfra).
Ellers kan man vel skifte style/class med js.

Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
Utils http://sdccms.dk/ordbog/ http://sdccms.dk/mailfriend/
http://bredelund.dk CMS som det var meningen et sådant skulle være
Bertel Lund Hansen
2013-05-25 13:52:39 UTC
Permalink
Post by Birger Sørensen
Hvordan registrer du at der er klikket på linket?
Det gør jeg ikke. Det er et almindeligt link til en fil.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Birger Sørensen
2013-05-25 14:02:52 UTC
Permalink
Post by Bertel Lund Hansen
Post by Birger Sørensen
Hvordan registrer du at der er klikket på linket?
Det gør jeg ikke. Det er et almindeligt link til en fil.
Så må du kunne bruge onclick, og kalde en funktion, der ændrer
className på elementet, til en klasse der har f.eks. display:none;

Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
Utils http://sdccms.dk/ordbog/ http://sdccms.dk/mailfriend/
http://bredelund.dk CMS som det var meningen et sådant skulle være
Bertel Lund Hansen
2013-05-25 14:12:49 UTC
Permalink
Post by Birger Sørensen
Så må du kunne bruge onclick, og kalde en funktion, der ændrer
className på elementet, til en klasse der har f.eks. display:none;
Vil det virke med det samme? Jeg kender ikke JS særlig godt.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Birger Sørensen
2013-05-25 14:23:03 UTC
Permalink
Post by Bertel Lund Hansen
Post by Birger Sørensen
Så må du kunne bruge onclick, og kalde en funktion, der ændrer
className på elementet, til en klasse der har f.eks. display:none;
Vil det virke med det samme? Jeg kender ikke JS særlig godt.
Det burde det.
Noget med at der skal returneres true, tumler i mit hoved - men det kan
godt være det kun gælder forme....
Men det skulle vel være rimeligt enkelt at forsøge sig lidt...

.skjult { display:none; }

<a id="fillink" href="fil" onclick="SkjulLink();">

function SkjulLink() {
var elm = document.getElementById('fillink');
if (elm) {
elm.className='skjult';
}
return true;
}

Ikke specielt unobtrusive, men kan da verificere om det virker.

Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
Utils http://sdccms.dk/ordbog/ http://sdccms.dk/mailfriend/
http://bredelund.dk CMS som det var meningen et sådant skulle være
Bertel Lund Hansen
2013-05-25 14:35:25 UTC
Permalink
Post by Birger Sørensen
function SkjulLink() {
Tak, det virker perfekt.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Bertel Lund Hansen
2013-05-25 14:38:48 UTC
Permalink
Post by Bertel Lund Hansen
Tak, det virker perfekt.
Men ikke helt. Kan jeg få funktionen til at sætte en
PHP-variabel?
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Birger Sørensen
2013-05-25 14:42:54 UTC
Permalink
Post by Bertel Lund Hansen
Post by Bertel Lund Hansen
Tak, det virker perfekt.
Men ikke helt. Kan jeg få funktionen til at sætte en
PHP-variabel?
js fungere jo clientside, php er serverside.
Man kan, men skal så over i noget AJAX, bruge en form, eller linke til
et phpscript der både sætter variablen, starter download og viser siden
igen.
Kan ikke huske hvordan man gør to ting fra PHP, men det er muligt.
Vil nok mene AJAXen er den enkleste...

Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
Utils http://sdccms.dk/ordbog/ http://sdccms.dk/mailfriend/
http://bredelund.dk CMS som det var meningen et sådant skulle være
Philip Nunnegaard
2013-05-25 15:00:48 UTC
Permalink
Post by Bertel Lund Hansen
Men ikke helt. Kan jeg få funktionen til at sætte en
PHP-variabel?
Birger skriver om AJAX, hvilket også var min første tanke.
Jeg skrev en gang et standard-script af fra en lærebog [1]. Det kan
hentes her:

http://www.hitsurf.dk/privat/ajax.txt

Sammenholdt med Birgers funktion fra tidligere indlæg får vi noget i
retning af (forudsat at værdien af variablen skal være '1'):

function SkjulLink() {
var elm = document.getElementById('fillink');
if (elm) {
elm.className='skjult';
kaldAHAH('indsaet_variabel.php?variabel=1','divnavn','Arbejder')
}
return true;
}

I filen indsaet_variabel.php gør du bare som du ville have gjort i en
hvilken som helst php-fil, hvor variablen blev gemt serverside.
Teksten "Arbejder" havner i det element der har id'en "divnavn". Efter
eksekvering vil den returnere det der måtte stå i echo-sætningerne i
php-filen.


[1] At jeg har skrevet det af, skal bare illustrere at jeg ikke forstår
koden til fulde, men at jeg ved hvordan det bruges.
--
Philip
Birger Sørensen
2013-05-25 16:29:57 UTC
Permalink
Post by Philip Nunnegaard
Post by Bertel Lund Hansen
Men ikke helt. Kan jeg få funktionen til at sætte en
PHP-variabel?
Birger skriver om AJAX, hvilket også var min første tanke.
Jeg skrev en gang et standard-script af fra en lærebog [1]. Det kan hentes
http://www.hitsurf.dk/privat/ajax.txt
Sammenholdt med Birgers funktion fra tidligere indlæg får vi noget i retning
function SkjulLink() {
var elm = document.getElementById('fillink');
if (elm) {
elm.className='skjult';
kaldAHAH('indsaet_variabel.php?variabel=1','divnavn','Arbejder')
}
return true;
}
I filen indsaet_variabel.php gør du bare som du ville have gjort i en hvilken
som helst php-fil, hvor variablen blev gemt serverside.
Teksten "Arbejder" havner i det element der har id'en "divnavn". Efter
eksekvering vil den returnere det der måtte stå i echo-sætningerne i
php-filen.
[1] At jeg har skrevet det af, skal bare illustrere at jeg ikke forstår koden
til fulde, men at jeg ved hvordan det bruges.
Ja, det behøver faktisk ikke være vanskeligere end det ^^
Der er nu lidt med at req bare bruges uden at være defineret. Strengt
taget, er det vel heller ikke nødvendigt med nogen returfunktion, mens
en fejlmeddelelse hvis noget går galt (req.status != 200) ville være på
sin plads...
Og så måske nogle lidt mere forståeleige funktionsnavne.... :o)

var req = null;

function kaldAJAX(url) {
try {
req = new XMLHttpRequest(); /* f.eks. Firefox */
}
catch(e) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP"); /* IE-versioner */
}
catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP"); /* IE-versioner
*/
}
catch (e) {
req = false;
}
}
}
if (req) {
req.onreadystatechange = function() {svarAJAX();};
req.open("GET",url,true);
req.send(null);
}
else {
alert('Kan ikke oprette AJAX-object');
}
}

function svarAJAX() {
if(req.readyState == 4) {
if(req.status != 200) {
alert('AJAX fejlede!');
}
}
}

Så skal den ekstra linie i det eksisterende blot hedde
kaldAjax('script_der_sætter_variabel.php');

Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
Utils http://sdccms.dk/ordbog/ http://sdccms.dk/mailfriend/
http://bredelund.dk CMS som det var meningen et sådant skulle være
scootergrisen
2013-05-25 14:40:28 UTC
Permalink
Post by Bertel Lund Hansen
Post by Birger Sørensen
function SkjulLink() {
Tak, det virker perfekt.
Linket virker stadig selvom det ikke vises.
Man kan bare kigge i sin download/historik og hente filen igen eller
kopier linket før man downloader første gang.
Birger Sørensen
2013-05-25 14:45:29 UTC
Permalink
Post by scootergrisen
Post by Bertel Lund Hansen
Post by Birger Sørensen
function SkjulLink() {
Tak, det virker perfekt.
Linket virker stadig selvom det ikke vises.
Man kan bare kigge i sin download/historik og hente filen igen eller kopier
linket før man downloader første gang.
Nu var der tale om en intern side, så man kan jo også bare lade
være....
Mener i øvrigt, at display:none; fjerner elementet fra displayet, så
det vil være temmelig vanskeligt at klikke på det, når det ikke er
vist....

Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
Utils http://sdccms.dk/ordbog/ http://sdccms.dk/mailfriend/
http://bredelund.dk CMS som det var meningen et sådant skulle være
Bertel Lund Hansen
2013-05-25 14:54:01 UTC
Permalink
Post by Birger Sørensen
Nu var der tale om en intern side, så man kan jo også bare lade
være....
'Problemet' bestod i at jeg somme tider kom til at klikke to
gange på linket, så jeg fik to eksemplarer hentet. Det er såmænd
bare det jeg vil undgå.
Post by Birger Sørensen
Mener i øvrigt, at display:none; fjerner elementet fra displayet, så
det vil være temmelig vanskeligt at klikke på det, når det ikke er
vist....
Ja, det virker som sagt, men det virker ikke når jeg genhenter
siden. Derfor vil jeg gerne styre en variabel som jeg allerede
benytter. Den bliver nulstillet ved forskellige handlinger, og
jeg vil også gerne have den nulstillet ved klik.

Det er en smal sag at lave en PHP-side der ordner det hele -
bortset fra at jeg så ikke ved hvordan jeg aktiverer en download.
Jeg har nemlig allerede en form hvis action er siden selv.
--
Bertel
http://bertel.lundhansen.dk/ http://fiduso.dk/
Rune Jensen
2013-05-26 10:18:38 UTC
Permalink
Post by scootergrisen
Linket virker stadig selvom det ikke vises.
Ja. Med mindre, det styres af cookie.
Post by scootergrisen
Man kan bare kigge i sin download/historik og hente filen igen eller
kopier linket før man downloader første gang.
Vis kilde gør det samme.

Javascript ændrer kun dOMen eller hvad den hedder, den ændrer ikke i
den oprindelige kode, som browseren har indlæst. Det ville nok også
lede til alskens former for sikkerhedshuller.

Af den grund, hvis det er af hensyn til sikkerhed at linket skal slås
fra, så må det ikke gøres client side, det skal gøres serverside.
Eller cheket form, om linket er validt skal i hvert fald foregå
serverside.


MVH
Rune Jensen
scootergrisen
2013-05-25 15:10:34 UTC
Permalink
Post by Birger Sørensen
.skjult { display:none; }
<a id="fillink" href="fil" onclick="SkjulLink();">
function SkjulLink() {
var elm = document.getElementById('fillink');
if (elm) {
elm.className='skjult';
}
return true;
}
Kunne også laves såden her :

<a href="#" onclick="this.style.display='none';">Link</a>

Demo : http://netkoder.dk/test/test0225.html
Loading...