[JS] Textarea objecten opslaan in array

Pagina: 1
Acties:

  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Ik gebruik de volgende functie om een html document te doorlopen op textarea's met een bepaalde classnaam:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var target = {};

function init() {
  var theTextareas = document.getElementsByTagName('textarea');
  var thisTextarea, i = 0;

  while (thisTextarea = theTextareas[i++]) {
    if (thisTextarea.className.classExists('verplicht')) {
      if (thisTextarea.id == '') {
        thisTextarea.id = thisTextarea.name;
      }
      target[i] = thisTextarea;
      transformTextarea(thisTextarea);
    }
  }
}

function transformTextarea(textarea) {
  // plaats een [b], [u] en [link] knop boven de tekstarea
}

Nu zou ik graag deze textarea's in een array (hier: target) opslaan, zodat ik ze in een later stadium kan benaderen. Als er bijvoorbeeld 3 tekstarea's met de class "verplicht" op de pagina staan, wil ik bijvoorbeeld de target op de laatste textarea kunnen zetten mbv target[2].focus();

Echter, mijn code hierboven werkt niet. Als ik target(0) of target(2) alert nadat init() doorlopen is, krijg ik een undefined. Is wat ik wil ueberhaupt wel mogelijk en zo ja, wat doe ik dan verkeerd?

[ Voor 6% gewijzigd door Reveller op 06-01-2007 15:15 ]

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:11

crisp

Devver

Pixelated

Je wil een array maar instantieert een object :?
Waarom niet gewoon zo:
JavaScript:
1
2
3
4
5
6
7
8
9
var target = [];

//...
target.push(thisTextarea);

//..
var target_length = target.length;
if (target_length)
    target[target_length - 1].focus();

[ Voor 5% gewijzigd door crisp op 06-01-2007 15:20 ]

Intentionally left blank


  • Reveller
  • Registratie: Augustus 2002
  • Laatst online: 05-12-2022
Mijn fout. Ik dacht dat je met {} een array instantieerde. Ik moet ook geen shorthand notaties gebruiken als ik er niet 100% bekend mee ben :(

Dank je!

[ Voor 4% gewijzigd door Reveller op 06-01-2007 15:45 ]

"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

mis ik iets of doet dit wat je wil:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
var target = new Array();

function init() {
    var areas = document.getElementsByTagName("textarea");
    for(var i=0; i<areas.length; i++)
        if(areas[i].className.match(/verplicht/)) target.push(area[i]);
}

function focus(nr) {
    if(nr < target.length && nr >= 0) target[nr].focus();
}

focus(2);

oprecht vertrouwen wordt nooit geschaad


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:11

crisp

Devver

Pixelated

Atgast schreef op zaterdag 06 januari 2007 @ 15:52:
mis ik iets of doet dit wat je wil:
[...]
JavaScript:
1
areas[i].className.match(/verplicht/)

HTML:
1
<textarea class="nietverplicht"></textarea>

;)

Intentionally left blank


  • Arjan
  • Registratie: Juni 2001
  • Niet online

Arjan

copyright is wrong

crisp schreef op zaterdag 06 januari 2007 @ 15:53:
[...]

JavaScript:
1
areas[i].className.match(/verplicht/)

HTML:
1
<textarea class="nietverplicht"></textarea>

;)
|:(
dan te bedenken dat ik meestal regexes gebruiken om hoofd/kleine letter op te vangen... en dan nog niet eens/i erbij zetten...

oprecht vertrouwen wordt nooit geschaad


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 18:11

crisp

Devver

Pixelated

Atgast schreef op zaterdag 06 januari 2007 @ 15:59:
[...]

|:(
dan te bedenken dat ik meestal regexes gebruiken om hoofd/kleine letter op te vangen... en dan nog niet eens/i erbij zetten...
Met een /i was het helemaal fout geweest: classnames zijn case-sensitive ;)

Intentionally left blank

Pagina: 1