Dobrý den, potřeboval bych pomoct s javascriptem, který by vyhldával v textu určitá slova a obaloval je do určitých tagů (jako u intextové reklamy jen s tím rozdílem, že by to nebyla reklama, ale vysvětlivky). Můj kód je takový:
function bubliny(slovo, txt, nadpis, popis) {
for (ii = 0; ii < vzor.length; ii++)
if (isShoda(vzor[ii][1], slovo) >= 0)
break;
if (ii >= vzor.length) {
return;
}
var arndx = 0;
var ar = new Array();
var theHTML = document.getElementById(txt).innerHTML;
for (jj = 1; jj < 8; jj++) {
var word1 = Sklon(jj, ii, slovo);
var word2 = Sklon(jj + 7, ii, slovo);
if (!poleMa(ar, word1) && word1!="?") {
var regExp = new RegExp("(<[^>]*>)|(\\b" + word1.replace("/([-.* ?^${}()|[\]\/\\])/g","\\$1") + ")", "ig");
theHTML = theHTML.replace(regExp, function(a, b, c){
return (a.charAt(0) == "<") ? a : vytvorbublinu(c, nadpis, popis);
});
ar[arndx++] = word1;
}
if (!poleMa(ar, word2) && word2 != "?") {
var regExp = new RegExp("(<[^>]*>)|(\\b" + word2.replace("/([-.* ?^${}()|[\]\/\\])/g","\\$1") + ")", "ig");
theHTML = theHTML.replace(regExp, function(a, b, c){
return (a.charAt(0) == "<") ? a : vytvorbublinu(c, nadpis, popis);
});
ar[arndx++] = word2;
}
}
document.getElementById(txt).innerHTML = theHTML;
}
Tuto funkci volám pokaždé, když chci přidat vysvětlivku k nějakému slovu. Funkce vytvorbublinu vrátí zpět HTML pro vysvětlivku, které je něco jako <a title="popis">původní slovo</a>. Také používám jemně upravený skloňovací engine z http://pteryx.net/sklonovani.html pro podchycení 90% výskytu klíčových slov (reprezentován funkcí Sklon). Všechno funguje dobře, mám ale problém s regulárním výrazem. Potřebuji, aby nedošlo k vícenásobnému obalení u výrazů a zničení ostatních HTML tagů (odkazy, obrázky, seznamy). Sám se moc v regulárních výrazech nevyznám a moc by mi pomohlo, kdyby mi někdo poradil. Můj aktuální výraz je: "(<[^>]*>)|(\\bAHOJ)" Děkuji moc za vaše reakce...
|