Avatar billede iblarsen Praktikant
02. august 2008 - 14:51 Der er 19 kommentarer og
1 løsning

Disable en hel side (næsten)

Er der nogen som ligger inde med et javascript som kan disable alle input kontroller (knapper, tekstbokse m.v.) på en webside.
Avatar billede olebole Juniormester
02. august 2008 - 14:52 #1
<ole>

Hvad skal du bruge det til - og hvordan?

/mvh
</bole>
Avatar billede iblarsen Praktikant
02. august 2008 - 14:55 #2
Jeg vil såmænd bare gerne kunne låse alle kontroller under nogle bestemte lejligheder. Og for ikke at skulle gøre det "hele manuelt". Tænkte jeg - der må findes en løsning på dette.
Avatar billede olebole Juniormester
02. august 2008 - 15:02 #3
Prøv at lægge et link til siden
Avatar billede iblarsen Praktikant
02. august 2008 - 15:05 #4
??
hvorfor det - det jeg ønsker er en javascript funktion som jeg kan kalde. Og som selv finder og 'disabler' omtalte kontroller.
Avatar billede olebole Juniormester
02. august 2008 - 15:10 #5
Det er da vel åbenlyst logisk. Jeg kender jo ikke den kode, scriptet skal virke i  =)
Avatar billede mclemens Nybegynder
02. august 2008 - 16:07 #6
Det er muligt at du blot kan gøre sådan her...


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function toggleenable(){
  var elms=["input","select","textarea"];
  for(i=0;i<elms.length;i++){
    elms[i]=document.getElementsByTagName(elms[i]);
    for(j=0;j<elms[i].length;j++){
      elms[i][j].disabled=!elms[i][j].disabled;
    }
  }
}
</script>

<style type="text/css">
</style>

</head><body>


<input type="text" value="a">

<select>
<option>a</option>
</select>

<input type="text" value="a">

<select>
<option>a</option>
</select>

<textarea>a</textarea>

<b onclick="toggleenable();">Test</b>
</body></html>
Avatar billede iblarsen Praktikant
02. august 2008 - 16:11 #7
super - jeg kigger på det og vender tilbage
Avatar billede mclemens Nybegynder
02. august 2008 - 16:24 #8
Forresten, så hvis noggle af dem er disabled i forvejen ville de blive enabled
- og dermed lave lidt rod i disable / enable funktionen ... så alternativt til
ovenstående kan du prøve med scriptet:

<script type="text/javascript">
var toggleenabl=false;
function toggleenable(){
  var elms=["input","select","textarea"];
  for(i=0;i<elms.length;i++){
    elms[i]=document.getElementsByTagName(elms[i]);
    for(j=0;j<elms[i].length;j++){
      elms[i][j].disabled=!toggleenabl;
    }
  }toggleenabl=!toggleenabl;
}
</script>

Eller evt. fortælle scriptet om det skal enable eller disable med:

<script type="text/javascript">
function toggleenable(t){
  var elms=["input","select","textarea"];
  for(i=0;i<elms.length;i++){
    elms[i]=document.getElementsByTagName(elms[i]);
    for(j=0;j<elms[i].length;j++){
      elms[i][j].disabled=t;
    }
  }
}
</script>

samt:
<b onclick="toggleenable(true);">Test</b>
<b onclick="toggleenable(false);">Test</b>
Avatar billede olebole Juniormester
02. august 2008 - 17:15 #9
- men hvis man vil noget bedre og elegant end den mest muligt ineffektive løsning, må man kende koden, det skal virke i  ;o)
Avatar billede mclemens Nybegynder
02. august 2008 - 17:29 #10
Og hvis man skal udtale sig om, hvorvidt en given løsning er den mest muligt
ineffektive løsning, skal man nok se siden, før man kommenterer effektiviteten ;o)

- Derfor ikke sagt at det muligvis kan laves enklere eller bedre
afhængig af sidens opbygning, men man kan ikke sige det modsatte.
(det er spørgers beslutning om han vil link til siden og have
noget specifikt lavet til siden eller om han ikke ønsker det)
Avatar billede iblarsen Praktikant
02. august 2008 - 19:03 #11
mclemens: det ser super ud - smider du lige et svar. Godet med en general rutine, da det skal bruges på rigtig man sider!!!
Avatar billede mclemens Nybegynder
02. august 2008 - 19:10 #12
Velbekom, her er lige et svar. Ombestemmer du dig og vil have noget, der er
lidt hurtigere - så kast lige et link, så "kan" det ske, der er noget, der er et
par ms. hurtigere og bruger et par kb mindre af den besøgendes system ressourcer.
Avatar billede olebole Juniormester
02. august 2008 - 21:41 #13
mclemens >> En søgning udfra dokumentet kan aldrig blive større. Derfor er det højst usandsynligt, der ikke findes mere specifikke søgninger. Hvis elementerne f.eks. ligger i en form, kunne FORM.elements med stor fordel bruges  =)

God kode er effektiv, overskuelig og logisk - og ja, grundet effektiviteten kan den endda ofte spare lidt på brugerens resourcer. Det sidste er dog ikke nødvendigvis hovedårsagen til at skrive kode, der er effektiv  ;o)
Avatar billede mclemens Nybegynder
02. august 2008 - 22:31 #14
Ole >> Tak for oplysningen, dog er det noget, jeg ved i forvejen.
(Jeg har fået et par gode tips fra en Olebole og Roenving på exp.dk)

- Medmindre vi snakker mange elementer eller der kører mange dynamiske
scripts på samme tid, så tror jeg ikke det har nogen mærkbar effekt (jeg har
dog ikke testet) - men tager man en "måske" unaturlig mængde elementer i forhold
til hvad der måske er på siden (1000-5000), kan man sikkert se en mærkbar forskel i ms.

Jeg læste 02/08-2008 15:05:53, som et "indirekte" ønske om ikke at lægge et link
og derfor lavede jeg et eksempel i 02/08-2008 16:07:35, da 02/08-2008 15:10:27
efter min læsning ikke lagde op til at løse problemet uden kildekode visning.
Avatar billede olebole Juniormester
02. august 2008 - 22:42 #15
I lyset af min seneste kommentar, forstår jeg ikke helt, hvorfor du er så optaget af msek  =)
Avatar billede mclemens Nybegynder
02. august 2008 - 22:43 #16
Et eksempel alligevel:

- Det siger som du sikkert godt ved 0ms og 0ms ,da der er meget lille forskel på at fange dem den ene vej eller den anden - jeg indrømmer dog, at der viser sig nogle ms. efter første klik på at tilføje 1000 elementer, men jeg formoder ikke det drejer sig om flere tusinder af form elementer...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><meta http-equiv="content-type" content="text/html; charset=iso-8859-1"><title>Ingen titel</title>

<script type="text/javascript">
function toggleenable(t){
  st=new Date().getTime();

  if(t){
    elms=document.formnavn.elements;
    for(i=0;i<elms.length;i++){
      elms[i].disabled=!elms[i].disabled;
    }


  }else{
  var elms=["input","select","textarea"];
  for(i=0;i<elms.length;i++){
    elms[i]=document.getElementsByTagName(elms[i]);
    for(j=0;j<elms[i].length;j++){
      elms[i][j].disabled=!elms[i][j].disabled;
    }
  }}

  alert("Time usage: "+(new Date().getTime()-st));

}



function lavtusindelementer(){
  for(i=0;i<1000;i++){
    a=document.createElement("input");
    a.setAttribute("type","text");
    document.formnavn.appendChild(a);
  }
}
</script>

<style type="text/css">
</style>

</head><body>

<b onclick="toggleenable(true);">Test med form</b><br><br>
<b onclick="toggleenable(false);">Test uden form</b><br><br>
<b onclick="lavtusindelementer(false);">Lav tusind elementer i formen</b><br><br><br><br><br><br>

<div>a</div><div>a</div><div>a</div>

<div>a</div><div>a</div><div>a</div>
<div>a</div><div>a</div><div>a</div>

<form name="formnavn">
<div>a</div><div>a</div><div>a</div>
<input type="text" value="a">

<select>
<option>a</option>
</select>

<input type="text" value="a">
<input type="text" value="a">
<input type="text" value="a">
<input type="text" value="a">
<input type="text" value="a">
<input type="text" value="a">
<input type="text" value="a">
<input type="text" value="a">
<input type="text" value="a">
<div>a</div><div>a</div>
<select>
<option>a</option>
</select>
<div>a</div><div>a</div>
<textarea>a</textarea>
<input type="text" value="a">
<div>a</div>
<select>
<option>a</option>
</select>

<input type="text" value="a">

<select>
<option>a</option>
</select>
<div>a</div><div>a</div>
<textarea>a</textarea>
<input type="text" value="a">

<select>
<option>a</option>
</select>

<input type="text" value="a">

<select>
<option>a</option>
</select>
<div>a</div><div>a</div>
<textarea>a</textarea>

</form>

<div>a</div><div>a</div><div>a</div><div>a</div>

<div>a</div><div>a</div><div>a</div>
<div>a</div><div>a</div>
</body></html>
Avatar billede mclemens Nybegynder
02. august 2008 - 22:53 #17
"God kode er effektiv, overskuelig og logisk - og ja, grundet effektiviteten kan den endda ofte spare ..."

^- Nåh, det er måske det du henviste til ?
Jamen, jeg synes nu at kodningen er effektiv, overskuelig og logisk nok - men det er så min holdning til det, jeg indrømmer den bruger et par linjer mere, men linjerne burde sige sig selv mere eller mindre - og det bør derfor ikke gøre den speciel ulogisk eller uoverskuelig ... ordet "effektiv" er der hvor jeg bringer ms. ind i billedet.
Avatar billede mclemens Nybegynder
02. august 2008 - 23:04 #18
- Eller mener du noget andet der ikke er målbart med ordet effektiv ?
... For at bruge et ord som effektiv, må man jo sammenligne dem på den
ene eller anden måde - jeg ville normalt forholde mig til størrelsen af
kodningen samt hastigheden, er det de to ekstra linjer kodning du tænker
på i stedet?
Avatar billede olebole Juniormester
03. august 2008 - 00:05 #19
Effektiv kode, er det ofte, fordi den er mere specifik. Når koden er 'stram' og specifik er den betydeligt lettere at læse. Det betyder ikke så meget ved en side med små scripts, men er en nødvendighed i lidt mere komplekse ting
Avatar billede mclemens Nybegynder
03. august 2008 - 16:08 #20
Tak for point :)
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