Snellijsttool 1/4 van de troepen.

6 views
Skip to first unread message

iDesign

unread,
Feb 21, 2010, 4:39:10 PM2/21/10
to TT Dev
Ik wil graag een snellijsttool maken die 1/4 van de troepen invult, ik
zit nu met het probleem:
Hoe kan je nu dat nummer aanwijzen? Dus het aantal van de eenheid in
het dorp dat naast het input vakje staat in de verzamelplaats.

Zalastra

unread,
Feb 21, 2010, 9:02:45 PM2/21/10
to TT Dev
Om informatie uit de webpagina te kunnen uitlezen, of om de webpagina
aan te passen moet je met de DOM (Document Object Model) werken. Alle
html elementen worden in de DOM via een boomstructuur als objecten
gepresenteerd die je kan benaderen. Om een duidelijk overzicht te
krijgen van hoe de website nou in elkaar zit kan je tools gebruiken
zoals de firebug en dom inspector extensies in firefox. In opera
zitten ontwikkelaars tools ingebouwd en in chrome meen ik ook.

Nu is er in de globale javascript scope een referentie naar het
document, die ook zo genaamd is. Nu kunnen we op elk dom element een
methode aanroepen om dieper in de boomstructuur elementen te vinden.
De twee meest gebruikte functies zijn getElementsByTagName en
getElementsById. De eerste levert een lijst van elementen op (kan dus
een lege lijst zijn als er niks wordt gevonden) en de tweede direct
het element waar naar je zoekt, of als er niks gevonden wordt null.

In jouw geval wil je dus zoeken naar anchor elementen om daar dan te
tekst inhoud uit te halen. met var a =
document.getElementsByTagName("a"); zou je dus een lijst van alle
anchors kunnen opvragen. Maar je zal natuurlijk een wat selectievere
lijst willen hebben. Je zou bijvoorbeeld alle anchor elementen binnen
in het formulier kunnen opvragen. Er is al standaard een lijst van
formulieren gedefineerd in het document object dus dat zouden we zo
kunnen doen: var a = document.forms[0].getElementsByTagName("a"); En
dan zou je de tekst er uit kunnen halen door de property textContent
(let op: deze property is niet in IE geimplementeerd, daar zou je
innerText moeten gebruiken) aan te spreken: var text =
a[0].textContent;

Ik hoop dat je zo een eind op weg bent geholpen, je zal ff een DOM
reference op moeten zoeken, want er is natuurlijk een heleboel wat ik
hier nog niet verteld heb.
Je kan overigens alle attributen van html elementen ook gewoon direct
aanspreken via de dom als properties van element, voorbeeld
verdergaand op hierboven: var href = a[0].href;

Lekensteyn

unread,
Feb 22, 2010, 10:24:07 AM2/22/10
to TT Dev
Gelukkig heeft Tribal Wars een tijdje terug een update uitgebracht
waarbij de beschikbare eenheden te verkrijgen is met het attribuut
'maxunits':

var spear = document.forms[0].spear;
var beschikbare_speren = spear.getAttribute('maxunits');

Om een kwart van de eenheden in te voegen (afgerond naar beneden):

var spear = document.forms[0].spear;
spear.value = Math.floor(spear.getAttribute('maxunits') / 4);

Ik definieer meestal een variabele, 'tc':

var tc = document.textContent ? 'textContent' : 'innerText';
Dit werkt uitstekend :)
Gebruik:

document.getElementsByTagName('b')[0][tc]; // haal coördinaat van het
huidige dorp op.

iDesign

unread,
Feb 23, 2010, 10:29:44 AM2/23/10
to TT Dev
Bedankt voor de antwoorden. Ik ga er donderdag eens goed naar kijken,
of nu al. Ik hoop dat ik stukke verder kom met javascript.

Dankje.

Reply all
Reply to author
Forward
0 new messages