[ protech_v2 @ 15.05.2007. 17:58 ] @
Pozdrav!

Moze neki predlog JS funkcije koja ce extraktovati text iz HTML-a? Znaci u principu samo vratiti sve bez HTML tagova, to mi sasvim odgovara...

Dakle ako imam

Code:
<font size="1"><p>neki text pa broj <span> 10 </span></p></font>


treba da mi vrati "neki text pa broj 10" :)

Probao sam sa ovako necim, rekurzija, ali pravi mi mrtvu petlju u nekim slucajevima, ne mogu nikako da nadjem zasto...

Code:
function AUI_striptext(HTML){

    a = HTML.indexOf("<");
    b = HTML.indexOf(">");

    HTMLlen = HTML.length;

    c = HTML.substring(0, a);
    
    if(b == -1)
    b = a;

    d = HTML.substring((b + 1), HTMLlen);

    Word = c + d;

    tmp = Word.indexOf("<");

    if(tmp != -1)
    Word = AUI_striptext(Word);

    return Word;
}


Hvala!
[ bzero @ 15.05.2007. 18:42 ] @
Potpuno ti je pogresan pristup problemu. Nema apsolutno nikakvog smisla da sa indexOf "lovis" tagove, kada je iz javascripta na raspolaganju DOM.
Resenje je da prodjes kroz sve nodove u dokumentu, da proveris njihov tip i nadjes sve koji imaju tip TEXT_NODE i uzmes njihovu sadrzaj, tj text.

DOM generalno:

http://developer.mozilla.org/en/docs/DOM

a ovde posebno obrati paznju na childNodes, nodeType i nodeValue, to je ono sto ti konkretno treba da bi uradio to sto hoces:

http://developer.mozilla.org/en/docs/DOM:element
[ protech_v2 @ 16.05.2007. 02:24 ] @
Hvala na dobrom odgovoru!

Prvo nisam hteo da se zezam sa traversiranjem DOM tree-ja, ali ispade stvarno na kraju najbolje resenje, a plus nisam ni znao da postoje pomocne varijante u vidu odlicnog TreeWalkera, doduse IE ovo ne podrzava:

Code:
var rootnode=window.content.document.documentElement; //zameniti sa odgovarajucim kodom, ovo je iz Firefox extenzije
var walker=document.createTreeWalker(rootnode, NodeFilter.SHOW_TEXT, null, false);
while (walker.nextNode()) bodyText += walker.currentNode.nodeValue;


Tri reda! :)

http://www.javascriptkit.com/dhtmltutors/treewalker.shtml