Autor Zpráva
cheli
Profil
Zdravím. Mám text(p) a potřebuju, aby se při najetí změnil (resp. rozšířil, ale to omezení mám připravené v php). Zkoušel jsem to udělat jen přes javascript a funkci document.getElementById('uvod').innerHTML, ale při přejíždění přes text to někdy bliká.

Neznáte tedy nějaký jquery popř. radu na úpravu v javascriptu, která by odpovídalo mým požadavkům? Změna textu. Budu vám moc vděčnej. Díky
Chamurappi
Profil
Reaguji na cheliho:
To je asi nejsnazší způsob, jak upravit vnitřní HTML kód odstavce. Nic jednoduššího nenajdeš a použiješ-li nějaké jiné hotové funkce, budou také nejspíš měnit innerHTML.

při přejíždění přes text to někdy bliká
Jak to bliká? Ukaž.
cheli
Profil
Chamurappi:
jak to bliká - odkaz . Když najedeš na zelený blok, tak se otevře a pokud se někdy zajede do volného prostoru (mimo text), tak to zablikne. V IE to asi dělá víc. Nastavil sem na zabalení bloku zdržení asi 2sec, což trochu pomohlo, ale stále to není dokonalé
edit: přijde mi, jakoby hover efekt působil jen na text a né na celý blok. Zatím nevim, jak to řešit
Chamurappi
Profil
Reaguji na cheliho:
V IE to asi dělá víc.
Všude to dělá stejně.

Nemáš problém s měněním textu, máš problém s událostmi. Ony se totiž události onmouseover a onmouseout vyvolávají i při přejetí přes potomky elementu, na kterém jsou nadefinované (takzvaně probublávají). Takže jakmile uživatel odjede z odstavce uvnitř měněného <div>u, načasuješ jeho zavření, přestože je kurzor pořád uvnitř. Musíš při onmouseover to načasování zase zrušit metodou clearTimeout.

Na tvém místě bych v tomto případě neměnil innerHTML, ale jen třídu (tedy className), která by s pomocí CSS rozhodla, co má a co nemá být viditelné. Ale to je spíš filozofický rozdíl, nijak nesouvisející s tím tvým blikáním.
cheli
Profil
Chamurappi:
a poradil bys mi, jak clearTimeout vpásovat do mého scriptu? JS se zatím neučím, jen s ním přicházím do styku, tak se v něm ještě tolik neorientuji.

<div onMouseOver="rozbaleni()" onMouseOut="zab()"></div>

<script language="javascript">
function rozbaleni() {
  document.getElementById('uvod').innerHTML = text;
}
        
function zabaleni() {
  document.getElementById('uvod').innerHTML = '<?php echo substr($odstavec,0,340)." ...";?>';
}

function zab() {
  var t=setTimeout("zabaleni()",2500);
}
</script>
_es
Profil
cheli:
<div id=preduvod></div>
<script>
var el0 = document.getElementById('preduvod'), el = document.getElementById('uvod'), t1, t2;
el0.onmouseover = function(){ clearTimeout(t1); t1 = setTimeout(rozbaleni, 100); };
el0.onmouseout = function(){ clearTimeout(t2); t2 = setTimeout(zabaleni, 100); };

function rozbaleni() {
  el.innerHTML = text;
}
        
function zabaleni() {
  el.innerHTML = '<?php echo substr($odstavec,0,340)." ...";?>';
}
</script>
cheli
Profil
_es:
Vypadá to, že to funguje :D. Díky za pomoc, ušetřilo mi to čas i starosti. Přeju hezjký den a ještě jednou díky
_es
Profil
cheli:
Ešte zruš tie atribúty pre udalosti v tom DIVe.
Teda nie:
<div id="preduvod" onMouseOver="rozbaleni()" onMouseOut="zabaleni()">
ale len:
<div id="preduvod">
Chamurappi
Profil
Reaguji na cheliho:
A také vyhoď ten devadesátikilový balík skriptů, které nepoužíváš.
_es
Profil
cheli:
A myslel si na to, že môže mať niekto vypnutý JS alebo Flash?
cheli
Profil
Chamurappi:
Reaguji na cheliho:
A také vyhoď ten devadesátikilový balík skriptů, které nepoužíváš.
Nejspíš tim myslíš to, že by to mělo být v externím souboru?

_es:
cheli:
A myslel si na to, že môže mať niekto vypnutý JS alebo Flash?
Nemyslel. Jen jsem hledal způsob, kterým by se tohlo dalo udělat. Flash není moje práce
_es
Profil
cheli:
... Nejspíš tim myslíš to, že by to mělo být v externím souboru?
Myslí práve "vyhodenie" tých nepoužívaných externých súborov.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0