/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Checkbox - check alle med navn felt[]
Fra : jonas@delfs.dk


Dato : 16-03-06 14:41

Hej

Jeg har en række checkboxes som alle er navngivet felt[] fordi det er
bekvemt når jeg bagefter skal modtage data'ene i PHP.
Jeg skal have lavet sådan en "check alle" funktion, og det er for så
vidt ikke noget problem, men jeg kan ikke finde ud af at loope et
element med '[]' sidst i navnet - hvordan gør jeg det i javascript?

På forhånd tak!

Mvh. Jonas


 
 
Jens Gyldenkærne Cla~ (16-03-2006)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 16-03-06 15:15

skrev:

> Jeg har en række checkboxes som alle er navngivet felt[] fordi
> det er bekvemt når jeg bagefter skal modtage data'ene i PHP.
> Jeg skal have lavet sådan en "check alle" funktion, og det er
> for så vidt ikke noget problem, men jeg kan ikke finde ud af
> at loope et element med '[]' sidst i navnet - hvordan gør jeg
> det i javascript?

Jeg vil gætte på at du skal escape med \[\], men det er lettere at
afgøre hvis man kan se en side online.
--
Jens Gyldenkærne Clausen
Svar venligst under det du citerer, og citer kun det der er
nødvendigt for at forstå dit svar i sammenhængen. Se hvorfor og
hvordan på http://usenet.dk/netikette/citatteknik.html

Lasse Reichstein Nie~ (16-03-2006)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 16-03-06 18:29

jonas@delfs.dk writes:

> [Man kan tilsyneladende ikke quote i google groups? - beklager!]

<URL:http://www.safalra.com/special/googlegroupsreply/>

> onclick="javascript:check(this.form.box);" /><br />
....

Man behøver ikke skrive "javascript:" foran i en onclick-handler.
Det gør, tilfældigvis, ikke noget (det bliver til en label).
(Og man bør ikke bruge links med href="javascript:...", så generelt
skal man aldrig skrive "javascript:" :)

> fint, men hvis jeg ændrer navnet til box[] de 3 steder, virker det
> ikke længere. Jeg har også prøvet at escape [ og ] som foreslået,
> men uden held?

Javascript har to syntakser for at tilgå egenskaber på et objekt:
"dot"-notation og "firkantet parentes"-notation. Den mest generelle
er den sidste:
objektudtryk[strengudtryk]
Her evalueres objektudtryk til et objekt og strengudtryk til en streng,
og så bliver det til et udtryk for egenskaben med det navn der står
i strengen.
Eksempel:
var objekt = new Objekt();
objekt["navn!"] = "Hans!";
objekt["tids" + "punkt"] = new Date();
alert(objekt["navn!"]);
alert(objekt["tid" + "spu" + "nkt"]);

Hvis egenskabens navn kunne bruges som en variabel (er en "identifier",
i.e., starter med _, $, eller et bogstav og fortsætter med samme eller
cifre) så kan man bruge dot-notationen:

// alert(objekt.navn!) // fejl. egenskabens navn er ikke en identifier
alert(objekt.tidspunkt); // virker

For at kunne bruge dot-notation skal egenskabens navn være en identifier,
*og* man skal kende den på det tidspunkt hvor man skriver koden.
Følgende tildelinger kan man heller ikke gøre med dot-notation:

for(var i = 0; i < 10; i++) {
objekt["prop"+i] = i * i; // "beregnet" egenskabsnavn
}
alert(objekt.prop4); // alerter 16.


Hyg!
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

jonas@delfs.dk (16-03-2006)
Kommentar
Fra : jonas@delfs.dk


Dato : 16-03-06 17:44

[Man kan tilsyneladende ikke quote i google groups? - beklager!]

Umiddelbart virker

<html><head>
<script language='JavaScript'>
function check(field) {
   for (i=0; i < field.length; i++) {
      field[i].checked = !field[i].checked;
   }
}
</script>
</head><body>

<form>
<input type="checkbox" name="kurt" value="svend"
onclick="javascript:check(this.form.box);" /><br />
<input type="checkbox" name="box" value="bent" /><br />
<input type="checkbox" name="box" value="hans" /><br />
</form>

</body></html>

fint, men hvis jeg ændrer navnet til box[] de 3 steder, virker det
ikke længere. Jeg har også prøvet at escape [ og ] som foreslået,
men uden held?

Mvh. Jonas


Lasse Reichstein Nie~ (16-03-2006)
Kommentar
Fra : Lasse Reichstein Nie~


Dato : 16-03-06 18:17

jonas@delfs.dk writes:

> Jeg har en række checkboxes som alle er navngivet felt[] fordi det er
> bekvemt når jeg bagefter skal modtage data'ene i PHP.
> Jeg skal have lavet sådan en "check alle" funktion, og det er for så
> vidt ikke noget problem, men jeg kan ikke finde ud af at loope et
> element med '[]' sidst i navnet - hvordan gør jeg det i javascript?

Lige som du skulle gøre det uden "[]" (ikke nødvendigvis lige som
du gør det, men det er jo en anden sag :)
----
function checkall(formRef) {
var felter = formRef.elements["felt[]"];
for (var i = 0; i < felter.length; i++) {
felter[i].checked = true;
}
}
----
Den kan så passende kaldes af en knap i formen:
<input type="button" value="Marker alle" onclick="checkall(this.form);">


Det er generelt anbefalet at tilgå sine form-controls via
collections, i.e.,

var formRef = document.forms['formId']; // hvis man ikke har den på
// den lette måde ved selv at
// være inde i formen
var control1 = formRef.elements['control1Name'];
var control2 = formRef.elements['control2Name'];

Det er standardoverholdende, virker i alle browsere og er ligeglad med
om der er sjove tegn in control-navnene.

/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'

Jeppe Bundsgaard (16-03-2006)
Kommentar
Fra : Jeppe Bundsgaard


Dato : 16-03-06 20:45

wrote in dk.edb.internet.webdesign.clientside:
> Hej
>
> Jeg har en række checkboxes som alle er navngivet felt[] fordi det er
> bekvemt når jeg bagefter skal modtage data'ene i PHP.
> Jeg skal have lavet sådan en "check alle" funktion, og det er for så
> vidt ikke noget problem, men jeg kan ikke finde ud af at loope et
> element med '[]' sidst i navnet - hvordan gør jeg det i javascript?

Hej
Noget i denne retning:
var e=getElementsByName("felt[]")
for(var i=0; i<e.length;i++)
{
e[i].checked=true; //eller false...
}

Mvh
Jeppe

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste