Autor | Zpráva | ||
---|---|---|---|
ph@tE Profil * |
#1 · Zasláno: 3. 7. 2007, 11:16:01
V javascriptu nejsem zrovna zběhlý a tak se ptám:
function findElements(elName, parentEl) { elName = elName.toLowerCase(); elChildNodes = parentEl.childNodes; childElements = new Array(); for (i = 0; i < elChildNodes.length; i++) { if (elChildNodes[i].nodeName.toLowerCase() != elName) childElements = childElements.concat(findElements(elName, elChildNodes[i])); else childElements = childElements.push(elChildNodes[i]); } for (i = 0; i < childElements.length; i++) window.alert(childElements[i].nodeName + " zakl: " + parentEl.nodeName); return childElements; } Toto je funkce, která by měla rekurzivně najít všechny elementy daného jména v nějakém elementu. Např. el = document.getElementById("main"); findElements("a", el); by mělo najít všechny odkazy v elementu s id main (i ty které jsou vnořené v jiných elementech elementu s id main). Bohužel to funguje tak, že jakmile se zavolá funkce findElements() rekurzivně, tak ukončí cyklus ve funkci findElements, která ji zavolala. Např. v HTML kódu <menu id="main"> <li><a href="#">Odkaz</a></li> <li><a href="#">Odkaz</a></li> </menu> nalezne funkce findElements() pouze první odkaz... |
||
los Profil * |
#2 · Zasláno: 4. 7. 2007, 14:57:06
Nenájde náhodou iba ten druhý odkaz? Premennú childElements si nikde nedeklaroval pomocou slova var ako lokálnu, teda je globálna. Takže pri každom zavolaní funkcie findElements ju nainicializuješ ako prázdne pole...
Skúšal si už niečo takéto? var el = document.getElementById("main"); el.getElementsByTagName("a"); |
||
ph@tE Profil * |
#3 · Zasláno: 4. 7. 2007, 15:54:34
Jo sry, já už to nepotřebuju, vyřešil jsem to jinou fcí. Jinak díky, můžete to tu kllidně zamknout...
los Díky, tak by to pravděpodobně taky šlo, jak říkám, přes JS jsem začátečník. |
||
Časová prodleva: 17 let
|
0