Autor Zpráva
Mirek77
Profil
Dobrý den. Dal jsem si na stránku blikající slovo :
<span id="textik">slovo</span>

<script>
var barva1 = "black";
var barva2 = "blue";
var aktualniBarva = barva1; // počáteční nastavení
interval = 2000; // milisekund

function zmenBarvu(idecko){
barvaTextiku = document.getElementById(idecko).style;
aktualniBarva = barvaTextiku.color = (aktualniBarva == barva1)?barva2:barva1;
}

setInterval("zmenBarvu('textik')",interval)
</script>


Když si tam dám ale jiné slovo :

<span id="textik">jiné slovo</span>

<script>
var barva1 = "black";
var barva2 = "red";
var aktualniBarva = barva1; // počáteční nastavení
interval = 2000; // milisekund

function zmenBarvu(idecko){
barvaTextiku = document.getElementById(idecko).style;
aktualniBarva = barvaTextiku.color = (aktualniBarva == barva1)?barva2:barva1;
}

setInterval("zmenBarvu('textik')",interval)
</script>

tak to už nefunguje.. Na stránce může být jenom jedno blikání? Nebo jak to napsat, aby blikalo slov víc?
Dík
_es
Profil
Mirek77:
Nebo jak to napsat, aby blikalo slov víc?
No nejako tak, aby to fungovalo:-) Metóda document.getElementById nájde prvý element na stránke s daným id, takže to logicky nemôže fungovať, ak tam máš viac elementov s takým id.
han5vk
Profil
ID by mali mať všetky elementy rozdielne. Ten javascript hľadá jeden prvok s ID, tak použije len ten prvý a ostatné nechá tak. Použi špecifické ID pre každé slovo, alebo class (a potom getElementsByClassName() - pozor vracia pole, nie jeden objekt, takže potrebuješ v cykle zapínať tie intervaly.


OT: Prečo vlastne chceš mať na stránke blikací text? Zvykne to len rušiť, ajkeď zasa 2 sekundy nie sú až tak krátky interval.

_es ma predbehol :)
Chamurappi
Profil
Reaguji na han5vka:
a potom getElementsByClassName() - pozor vracia pole
Vrací živou kolekci elementů a neexistuje v některých používaných prohlížečích, takže by ji neměl používat.
weroro
Profil
Chamurappi:
Toto by nepomohlo?
document.getElementsByClassName = function(trieda)
{
    var kolekcia = [];
    var elementy = document.getElementsByTagName("*");
    var regex = new RegExp("(^|\s)" + trieda + "(\s|$)");
    for (var i = 0; i < elementy.length; i++)
    {
        if (regex.test(elementy[i].className))
        {
            kolekcia.push(elementy[i]);
        }
    }
    return kolekcia;
}
Mirek77
Profil
han5vk:
Nevím jak použít specifické ID pro každé slovo - můžeš to ukázat názorně-vepsat přímo do tohoto zápisu?
(zápis pro 3 blikající texty) :

[pre]
<span id="textik">AAAAAAAAAA</span>
<script>
var barva1 = "black";
var barva2 = "blue";
var aktualniBarva = barva1; // počáteční nastavení
interval = 2000; // milisekund
function zmenBarvu(idecko){
barvaTextiku = document.getElementById(idecko).style;
aktualniBarva = barvaTextiku.color = (aktualniBarva == barva1)?barva2:barva1;
}
setInterval("zmenBarvu('textik')",interval)
</script>
</br></br>

<span id="textik">BBBBBBBBB</span>
<script>
var barva1 = "black";
var barva2 = "red";
var aktualniBarva = barva1; // počáteční nastavení
interval = 2000; // milisekund
function zmenBarvu(idecko){
barvaTextiku = document.getElementById(idecko).style;
aktualniBarva = barvaTextiku.color = (aktualniBarva == barva1)?barva2:barva1;
}
setInterval("zmenBarvu('textik')",interval)
</br></br>

<span id="textik">CCCCCCCC</span>
<script>
var barva1 = "black";
var barva2 = "blue";
var aktualniBarva = barva1; // počáteční nastavení
interval = 2000; // milisekund
function zmenBarvu(idecko){
barvaTextiku = document.getElementById(idecko).style;
aktualniBarva = barvaTextiku.color = (aktualniBarva == barva1)?barva2:barva1;
}
setInterval("zmenBarvu('textik')",interval)
</script></br></br>


Dík.
Podle Chamurapiho getElementsByClassName je nepoužitelné a werorovu zápisu nerozumím.. - teda kam přesně vložit textík
- to bych musel zase vidět konkrétně v tom jeho zápisu..

Jinak to blikání má zvýraznit určité (varovné) cifry na stránce.
_es
Profil
Mirek77:
Nevím jak použít specifické ID pro každé slovo
No predsa tak, aby malo každé slovo iné id. Trebárs bude mať jedno id=textik1 druhé id=textik2.
Amunak
Profil
Mirek77:
Nejlepší bude, když nebudeš blikat vůbec. Pokud to skutečně potřebuješ, použij něco jako tohle:

ukázka (kód)

Pár poznámek:
- mělo by to mít dobrou podporu v prohlížečích (když nebude, tak to prostě zůstane na té první poloze)
- všechno bliká víceméně naráz
- když potřebuješ jiné nastavení, prostě funkci zavoláš znova s jiným nastavením
- funguje to pouze na jednom specifikovaném elementu, který má právě jednu konkrétní třídu
- nikde se nekontroluje, jestli jsi zadal všechny potřebné parametry (a jestli jsou správně)
Mirek77
Profil
_es:
Tak jsem to napsal :

<span id="textik1">AAAAAAAAAA</span>
<script>
var barva1 = "black";
var barva2 = "blue";
var aktualniBarva = barva1; // počáteční nastavení
interval = 2000; // milisekund
function zmenBarvu(idecko){
barvaTextiku1 = document.getElementById(idecko).style;
aktualniBarva = barvaTextiku1.color = (aktualniBarva == barva1)?barva2:barva1;
}
setInterval("zmenBarvu('textik1')",interval)
</script>
</br></br>

<span id="textik2">BBBBBBBBB</span>
<script>
var barva1 = "black";
var barva2 = "red";
var aktualniBarva = barva1; // počáteční nastavení
interval = 2000; // milisekund
function zmenBarvu(idecko){
barvaTextiku2 = document.getElementById(idecko).style;
aktualniBarva = barvaTextiku2.color = (aktualniBarva == barva1)?barva2:barva1;
}
setInterval("zmenBarvu('textik2')",interval)
</br></br>

<span id="textik3">CCCCCCCC</span>
<script>
var barva1 = "black";
var barva2 = "blue";
var aktualniBarva = barva1; // počáteční nastavení
interval = 2000; // milisekund
function zmenBarvu(idecko){
barvaTextiku3 = document.getElementById(idecko).style;
aktualniBarva = barvaTextiku3.color = (aktualniBarva == barva1)?barva2:barva1;
}
setInterval("zmenBarvu('textik3')",interval)
</script></br></br>

a bliká jenom AAAAAAAAAA ...


Amunak:
Jo, to je hezký - ten zdroják použiju.. Dík.
Jinak ty blinkry potřebuju ke zvýraznění akce..
Amunak
Profil
Mirek77:
Jinak ty blinkry potřebuju ke zvýraznění akce..
To ale obvykle jde udělat jinou, méně odpuzující formou.
Mirek77
Profil
Amunak:
Například?
Jinak autům zrušit blinkry - je to odpuzující..;-)
Amunak
Profil
Mirek77:
Něčím, co upoutá, a nebliká. Od toho jsou grafici/designéři/reklamní specialisti. Ono blikání taky upoutá, ale většinu lidí to upoutá tak akorát na to, aby ze stránky rychle utekli a šli někam, kde na ně nic nebliká.

Napadlo tě prostě udělat jen větší písmo, nebo to dát třeba do nějakým způsobem zvýrazněného místa? Nedá se nic říct, když nepošleš problémovou stránku.
Mirek77
Profil
Amunak:
Ona je to (bude to) stránka, která bude trochu atypická - to blikání (něčeho podstatného) bude jen v úvodní prezentaci,
která přejde na jiný text, kde už pak žádné blikání nebude..

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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