Autor Zpráva
Stepanka
Profil *
Zdravím,

chtěla bych se zeptat, zkoušel jste někdo RSS ticker, který je na stránce: http://interval.cz/clanky/newsticker-aneb-pruzok-s-beziacim-textom/?

Já se tu s ním trápím už druhý den, ale ty jednotlivé řetězce se v tom rámečku neposouvají. Objeví se mi jenom ten rámeček a v něm vlevo natlačené všechny odkazy na sobě, takže je to úplně nečitelné a statické. Javascript v prohlížeči povolaný mám. Ten kód vypadá takto:


Soubor html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>titulek</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta http-equiv="content-language" content="en" />
<style type="text/css" media="screen">@import url(html/css/newsticker.css);</style>
<script type="text/javascript" src="libs/javascript/newsticker.js"></script>
</head>

<body>

<ul class="newsTicker">
  <li>první zpráva</li>
  <li>druhá zpráva</li>
  <li>třetí zpráva</li>
</ul>

</body>

</html>



Soubor newsticker.js:

var newsTicker = {};
newsTicker.ticker = new Array();

function newsTicker.init (elm, step, speed, delay) {
  if (elm && (elm.tagName == "UL") && document.getElementsByTagName) {
    // obsah funkcie
	   if (isNaN(step)) {var step = 2};
		if (isNaN(speed)) {var speed = 25};
		if (isNaN(delay)) {var delay = 1000};

		var message = elm.getElementsByTagName("LI");

		for (var i = 0; i < message.length; i++) {
 			message[i].style.left = 0 - message[i].offsetWidth + "px";
		}

		var tickerID = newsTicker.ticker.length;
		newsTicker.ticker[tickerID] = new Array(elm, step, speed, delay, message.length-1);
		newsTicker.roll(tickerID);
    	return true;
  		}
  return false;
}


function newsTicker.roll (id) {
    if (!isNaN(id) && newsTicker.ticker[id]) {
      // obsah funkcie
		var ticker = newsTicker.ticker[id];
		var message = ticker[0].getElementsByTagName("LI");
		var actualMessage = message[ticker[4]];

		if (parseInt(actualMessage.style.left) <= 0 - actualMessage.offsetWidth) {
 			if (ticker[4]+1 == message.length) {
    			ticker[4] = 0;
  			} else {
    			ticker[4] = ticker[4] + 1;
  			}
  			actualMessage = message[ticker[4]];
		}

		actualMessage.style.left = ticker[0].offsetWidth + (ticker[0].offsetWidth % ticker[1]);

		actualMessage.style.left = parseInt(actualMessage.style.left) - ticker[1] + "px";

		setTimeout("newsTicker.roll(" + id + ")", (parseInt(actualMessage.style.left) == 0) ? ticker[3] : ticker[2]);

      return true;
    	}
  return false;
}



A soubor newsticker.css:

ul.newsTicker {
  position: relative;
  border: 1px solid #000;
  height: 1.5em;
  list-style: none;
  padding: 0;
  margin: 0;
  overflow: hidden;
}

ul.newsTicker li {
  padding: 0;
  margin: 0;
  position: absolute;
  white-space: nowrap;
}



Vidíte v tom někdo nějakou chybu? Text by se měl hýbat. Posouvat se zprava doleva a na chvilku se zastavit (ostatně jak je to v odkazu výše)..

Byla bych moc vděčná za jakoukoliv radu! Už jsem před tímto zkoušela asi 5 různých tickerů z adresy http://search.freefind.com/find.html?pageid=r&id=6299074&mode=ALL&quer y=ticker&ics=1&fr=30. Zdály se mi výborné, ale pak jsem zjistila, že jsou strašně složité. Já mám jen pole 5ti odkazů (které se mění cronem) a to potřebuju vypisovat v nějakém "běžícím" řádku..

Mockrát děkuju.
peta
Profil
Stepanka
Animace pouta pozornost a snizuje citelnost textu, zvlast na LCD monitoru.

- jestli se neco neobnovuje, pak si zkontroluj kesovani
- pokud nastavujes pozici, pak je treba mit nadrazeny element typu position:relative. (actualMessage.style.left)
- jestli chces pomoci se svym kodem, je naprosto nezbyny odka na stranku s tvym kodem. Jakekoliv kousicky nemusi mit vliv na celek. Navic, jaky je vystup JS konzoly aspon jednoho www prohlizece?

http://podklady.interval.cz/fridrich/257/newsticker-simple.html
jestlize jim to funguje, pak by bylo dobre do jejich kodu postupne kopirovat casti tveho az do okamziku, kdy to prestane fungovat.
1. Cili ulozis si jejich kod.
2. Overis, ze stale funguje. Udelas si zalohu funkcniho kod.
3. Neco pridas a pokracujes bodem 2 nez se dostanes do bodu 4 nebo 5.
4. Nefunguje, obnovit funkcni zalohu a pokracovat bodem 2.
5. Slava, funguje.
peta
Profil
<script type="text/javascript" src="libs/javascript/newsticker.js"></script>
ale nejak nevidim radek s init(), ktery vlastne cely ten JS spousti. A kdo vi, jestli ho tam mas. Navic spoustet to v head muze vypsat neexistenci objektu.
Tohle tam maji oni.

<script type="text/javascript" src="newsticker-simple.js"></script>
<script type="text/javascript">

window.onload = init;

function init() {
if (document.getElementById) {
newsTicker.init(document.getElementById("pokus"));
}
}

</script>

a tohle jen ty:
<script type="text/javascript" src="libs/javascript/newsticker.js"></script>

cele toto muzes mit v tom newticker:
window.onload = init;

function init() {
if (document.getElementById) {
newsTicker.init(document.getElementById("pokus"));
}
}
ale, pokud to zavolas z head, muze to zahlasit neexistenci objektu, muze se to neprovest, kvuli IE blokonani akce onload atd. Mozna mas jinou pricinu.
Stepanka
Profil *
peta
Děkuji za rady, to:

window.onload = init;

function init() {
if (document.getElementById) {
newsTicker.init(document.getElementById("pokus"));
}
}

jsem tam doplnila. Pořád to ale stojí na místě :-(

Spouštm to na lokálu, takže mrknout na kódy bys mohl jedině takto:

[url=http://adresa.cz]http://89.102.102.118/libs/javascript/newsticker.js
[/url]
http://89.102.102.118/html/css/newsticker.css

http://89.102.102.118/html/templates/random.html.txt

Víc kódu na to zatím vliv nemá. Až se to bude hýbat, dosadím si tam svoje pole, které chci. Zatím to zkouším pro "první zpráva, druhá zpráva, atd.."

A ještě jednou moc děkuji za to upozornění na window.onload = init;
Stepanka
Profil *
Jo a to, co to dělá, můžeš vidět tady.. [url=http://89.102.102.118/random.php][/url]
Promiň, zapomněla jsem to dodat..
Stepanka
Profil *
Znovu, teď už je snad ten odkaz klikatelny.. http://89.102.102.118/random.php
Mike874
Profil *
tvoje: http://89.102.102.118/libs/javascript/newsticker.js
original: http://podklady.interval.cz/fridrich/257/newsticker-simple.js

ty soubory se lisi, ty tam mas chyby, hlavne menis syntaxi, proto se ti JS nespousti a proto ti to nebeha
Stepanka
Profil *
Teď už se neliší, mám tam navíc jen tady toto:

window.onload = init;

function init() {
if (document.getElementById) {
newsTicker.init(document.getElementById("pokus"));
}
}

protože mi to nechtěl brát ten hlavní soubor html, tak je to akorát naikludované. A stejně se to pořád nehýbe.. Ale zkusím to vyřešit jiným tickerem... I tak děkuju za rady!
peta
Profil
Stepanka
peta #2 · Zasláno: 19.5.2008 10:26:05, viz Mike874
Zkus ten postup, ze zacnes od funkcni verze a postupne, krok za krokem do ni budes delat upravy.
Pokud zvolis jiny postup, to muzes, ale daleko lip se pracuje jiz z funkcni verzi nez dohledavat chyby.

Odkazy mi nefunguji, takze tim cely problem pro mne hasne. Neni z ceho vyjit, opet nepises, co pise JS konzola, atd... Jestli to fungovalo Mike, tak mel stesti.
Asi je to prilis obtizny ukol zridit si docasne konto pro tyto ucely treba na wz.cz ne ic.cz (kvuli PHP) nebo jinem hostingu.
JS konzola je pomucka pro JS. Ma ji kazdy prohlizec. Predpokladam, ze kdyz ji nepouzivas, neznas.
FF - nastroje - chybova konzola
O - nastroje - javascript - konzola
IE - vlevo dole ve status baru zluty trojuhelnik s vykricnikem /!\ nebo modre e (jako explorer), se to da rozkliknout
JS konzola ti obvykle zahlasi radek a typ chyby. Ve tvem pripade tam mozna bude stale skakat undefined dokolecka, protoze tam mas casovac.
Stepanka
Profil *
peta
Díky moc za info o JS konzole, opravdu jsem to neznala. Jinak problém už mám vyřešený úplně jiným tickerem.

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:

Prosím používejte diakritiku a interpunkci.

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