Toon posts:

[js] element bepalen en halen.

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi iedereen ik zit met een probleem, duh..

Ik heb meerdere velden

code:
1
2
3
4
<input type="text" name="titel1">
<input type="text" name="titel2">
<input type="text" name="titel3">
<input type="text" name="titel4">


nu wil ik met een functie de inhoud van titel 1 t/m 4 kunnen lezen (per stuk)

in heb dus een functie

code:
1
2
3
4
function lees(id) {
    xx = 'titel' + id;
    alert(document.getElementById[xx].value);
}


nu wil ik dus als ik een link maak bv

code:
1
<a href="javascript:lees(1);">lees uit 1</a>


dat daar de titel van 'titel1' komt te staan, maar dat is niet het geval, hoe kan ik met een getElemendById de naam van het ID variabel houden?

Tis waarschijnlijk een klein iets maar bedankt! :)

Verwijderd

Je heb in je input tags nog geen values staan.
Maak trouwens van die name attributen id attributen
Als je alert(document.getElementById[xx].id) doet zou het moeten werken.

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Vraag ze gewoon op uit het form.elements Array ipv via getElementById. Die is daarvoor bedoelt. Je zult wel het form element op moeten vragen met getElementById wil je het DOM-compatible houden:

alert ( document.getElementById('formId').elements['titel' + id].value )

Verwijderd

Topicstarter
laten we zeggen dat op het moment van op de site zijn je zelf de texten invult, normaal staat er idd al wat maar dat kan ook gewijzigd worden en dus moet de 'huidige' text die in zo'n text boxje staat mee genomen worden.

En hoe bedoel je dat met de id atrributen? ik heb namelijk nog veel meer op z'n pagina staan waaronder al een id[xx] (1 t/m 2000) ofzoiets.

Verwijderd

Gek is dat, een id opvragen terwijl er geen element is met dat id. Dan nog raad ik je af om dit met getElementById te doen. Hiervoor is nu document.forms['formnaam'].elements['titel1'].value, dus je zult die input elementen ook nog even binnen een formulier moeten plaatsen. Nou ja, het is geloof ik niet verplicht, maar het is wel een goede gewoonte.

Input velden hebben een name attribuut, omdat namen meerdere keren mogen voorkomen op een pagina. Binnen een formulier bijvoorbeeld, maar je kunt ook twee dezelfde formulieren op een pagina zetten. die formuliernamen moeten wél uniek zijn, gezien de aard van de DOM structuur. document.forms['formnaam'] en document.forms.namedItem('formnaam') mogen maar naar één element verwijzen. Forms hebben daarom dus geen name attribuut meer, maar een id.

Het is overigens wel mogelijk om formulier elementen via hun id te bereiken, maar dan moet je weer allerlei ranzige constructies bedenken als je meerdere formulieren met dezelfde velden op een pagina wilt. Niet doen dus.

Verwijderd

Topicstarter
Ik denk dat ik al gedeelteilijk weet waarom het niet werkte, ik gebruik namelijk het volgende

code:
1
<input type="text" size="40" name="title[4]" value="red dragon (ftf) (1of2)">


ed...

nu doet ie dus moeilijk om die []

want

code:
1
alert(document.getElementById['thisform'].elements['title' + id].value);


werkte dus niet, dat zal ik dus denk ik (ff teste) moeten aanpassen naar

code:
1
alert(document.getElementById['thisform'].elements['title[' + id + ']'].value);


alles staat in
code:
1
2
<form name="thisform">
</form>


maar krijg nu deze error

code:
1
2
3
Error: document.getElementById.thisform has no properties
Source File: http://54353/sig2datnet/layout/script.js
Line: 2


:{

[ Voor 41% gewijzigd door Verwijderd op 29-12-2002 12:37 ]


  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

lees even alles en je had er van kunnen maken:

form id="thisform"

Verwijderd

Topicstarter
Bosmonster schreef op 29 december 2002 @ 12:35:
lees even alles en je had er van kunnen maken:

form id="thisform"
tnx voor je reactie,

ik heb gelijk de name in id veranderd maar het werkt nog steeds niet :{

ik krijg nog steeds devolgende error :{

code:
1
2
3
Error: document.getElementById.thisform has no properties
Source File: http://65464/sig2datnet/layout/script.js
Line: 2


Ik heb reeds 10 mogelijkheden geprobeerd, maar snap niet waar het um inzit :{

[ Voor 10% gewijzigd door Verwijderd op 29-12-2002 12:38 ]


  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script>
  function submitit()
  {
    msg = 'Er is een foutje. Je bent vast iets vergeten: \n';
    if (document.forms('formulier').Naamvar.value == '') msg += '* Naam vergeten\n';
    if (document.forms('formulier').Titel.value == '') msg += '* Titel vergeten\n';
    if (document.forms('formulier').Bericht.innerText == '') msg += '* Bericht vergeten\n';
    if (msg.length > 48) alert(msg)
      else document.forms('formulier').submit();
  }
</script>
<body class='scroll scroll back' topmargin=25 leftmargin=0 background='<?php echo $addpath; ?>_webimages/viroback.gif' style='background-repeat:no-repeat; background-position:center center;' bgproperties=fixed onload="document.forms['formulier'].Titel.focus();">
<form name=formulier action="addpostsql.php?afdlinkstr; ?>&kind=<?php echo $kind; ?>&forumID=<?php echo $forumID; ?>&TopicID=<?php echo $TopicID; ?>" method=post>
<table border=0 width=100% height=100% align=center cellpadding=0 cellspacing=0>
  <tr>
    <td align=center height=100% width=100%>
      <table border=0 width=1 align=center>
        <tr>
          <td colspan="3" width=100% height="70">
            <span style='margin-left: 4; margin-top: 10; margin-bottom: 10; font-weight:normal; font-size:32; font-family:Times New Roman;'>Een topic <?php if ($kind == 'edit') echo "bewerken"; else echo "toevoegen"; ?></span>
            <hr width=100%>
          </td>
        </tr>
        <tr>
          <td height="26">Naam</td>
          <td width="374" height="26"><input readonly class='groen' type="text" name="Naamvar" size="54" value="<?php if ($kind == 'edit') echo $row['topicstarter']; else echo $username; ?>" maxlength=15></td>
        </tr>
        <tr>
          <td height="26">Titel</td>
          <td width="374" height="26"><input class='groen' type="text" name="Titel" size="54" value="<?php if ($kind == 'edit') echo $row['topictitle']; ?>" maxlength=20></td>
        </tr>


Geen goeie code, en erg te veel code voor het antwoord, maar dit werkt wel.

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Verwijderd

Topicstarter
Sorry maar hier kan ik nou echt helemaal niets mee :{

Ik heb het over een var die [] bevat en dat zie ik niet in jou code terug :{

Verwijderd

De post van Cheatah zegt het al:
gebruik de document.forms['formId'] array om je doel te bereiken, dat is beter voor formulieren dan gebruik te maken van document.getElementById;
Overigens moet document.getElementById met ronde haakjes () ipv vierkante haakjes [] worden gebruikt, iets wat ik per ongeluk ook in mijn vorige post heb gedaan (toen ik jouw code kopieerde)

Verwijderd

Topicstarter
dus als ik het dan goed begrijp moet ik mijn form <form id="blaat"> geven bv?

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 22:41

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

kan, maar dat hoeft niet. Het is nl. een array, die je met naam kan aanspreken:

code:
1
document.forms['blaat'].elements['titel1']


maar ook met een nummer
code:
1
document.forms[0].elements[0]

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Verwijderd

Topicstarter
Prammenhanger schreef op 29 december 2002 @ 13:46:
kan, maar dat hoeft niet. Het is nl. een array, die je met naam kan aanspreken:

code:
1
document.forms['blaat'].elements['titel1']


maar ook met een nummer
code:
1
document.forms[0].elements[0]
Bedankt ik ben reeds een stukje verder, nu krijg ik met de volgende code

code:
1
    alert(document.forms['thisform'].elements['title' + id]);


code:
1
[object]


te zien :{ wat moet ik daar nu mee :D

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Dit werkt gewoon hoor.. ach kan ook via document.forms[] array.. :P Maar dat is allemaal imho verouderd en voor zover ik weet geen odnerdeel van de DOM spcificatie ;)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<html>
<head>
<script type="text/javascript">
function getValue (strFormId, strEleId) {
    alert ( document.getElementById(strFormId).elements[strEleId].value );
}
</script>
</head>
<body>
<form id="myform">
<input type="text" name="mytext" value="bladibla">
</form><br>
<a href="javascript:getValue('myform','mytext')">getValue</a>
</body>
</html>

[ Voor 35% gewijzigd door Bosmonster op 29-12-2002 15:25 ]


Verwijderd

Topicstarter
Bosmonster schreef op 29 december 2002 @ 15:21:
Dit werkt gewoon hoor.. en imho is een form element ophalen een stuk netter via getElementById.. en dat is ook wat Cheatah zegt.. hoewel zijn woorden worden omgedraaid door Martijn22..
maar nu zag ik dat stukje van prammenhanger, alleen krijg ik dan met dat gedeelte wat ik liet zien [object] te zien :{ wat betekend dat?

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 19-08 22:14

Bosmonster

*zucht*

Verwijderd schreef op 29 December 2002 @ 15:25:
[...]


maar nu zag ik dat stukje van prammenhanger, alleen krijg ik dan met dat gedeelte wat ik liet zien [object] te zien :{ wat betekend dat?


Omdat je dan alleen het element-object hebt opgevraagd en niet de value-property van dat element.. waar dus de tekst instaat... lijkt me toch logisch :?

Verwijderd

Topicstarter
|:( dom dom dom, maar bedankt voor de korte maar krachtige uitleg :)

Verwijderd

Bosmonster schreef op 29 December 2002 @ 15:21:
Dit werkt gewoon hoor.. ach kan ook via document.forms[] array.. :P Maar dat is allemaal imho verouderd en voor zover ik weet geen odnerdeel van de DOM spcificatie ;)

/me raadt Bosmonster aan om de HTML DOM specificatie maar eens te lezen ;)
Pagina: 1