Autor | Zpráva | ||
---|---|---|---|
Lokutus7323 Profil * |
#1 · Zasláno: 26. 5. 2009, 15:29:31
Dobrý den,
mám následující script pro funkci rolování textu velice podobného marquee v html ... vše funguje v pořádku s tím,že ale po načtení stránky texdt teprve "přijede onikud" z prava ..já bych ae potřeboval,aby text už po načtení stárnky byl najetý na stránce s tím,že by furt jezdil stejným směrem ... ae v JS kódu nemůžu najíst místo, kde tuto hodnotu vytvořit případně nastavit,tak žádám o pomoc vás... // Accessible Scroller by Mike Foskett (http://www.websemantics.co.uk/). Retain this message and you may use the code freely. var speed=50 // speed of scroller var step=3 // smoothness of movement var top="#top" // name of anchor used as page top when clicking start / stop / show var Start= "Start" // Text for start link var Stop = "Stop" // Text for stop link var Show = "Show" // Text for show link var x, scroll, divW, sText="" function onclickIE(idAttr,handler,call){ if ((document.all)&&(document.getElementById)){idAttr[handler]=new Function(call)} } function addLink(id,call,txt){ var e=document.createElement('A') e.setAttribute('href',top) e.setAttribute('onclick',call) var linktext=document.createTextNode(txt) e.appendChild(linktext) document.getElementById(id).appendChild(e) } function addControls(){ addLink('controls','clickAction(0)',Stop) onclickIE(document.getElementById('controls').childNodes[0],"onclick",'clickAction(0)') document.getElementById('controls').appendChild(document.createTextNode(' | ')) addLink('controls','clickAction(2)',Show) onclickIE(document.getElementById('controls').childNodes[2],"onclick",'clickAction(2)') } function stopScroller(){clearTimeout(scroll)} function setAction(node,callvalue,txt){ var c=document.getElementById('controls') c.childNodes[node].setAttribute('onclick','clickAction('+callvalue+')') onclickIE(document.getElementById('controls').childNodes[node],"onclick",'clickAction('+callvalue+')') c.childNodes[node].firstChild.nodeValue=txt } function clickAction(no){ switch(no) { case 0: stopScroller() setAction(50,51,Start) setAction(2,2,Show) break case 1: startScroller() setAction(0,0,Stop) setAction(2,2,Show) break case 2: stopScroller() setAction(0,1,Start) setAction(2,3,Start) x=0 document.getElementById('tag').style.whiteSpace='normal' document.getElementById('tag').style.left='-25px' break case 3: startScroller() setAction(0,0,Stop) setAction(2,2,Show) x=divW document.getElementById('tag').style.left=x+'px' } } function startScroller(){ document.getElementById('tag').style.whiteSpace='nowrap' var p=document.createElement('P') p.id='testP' p.style.fontSize='25%' //fix for mozilla. multiply by 4 before using x-=step if (document.getElementById('tag').className) p.className=document.getElementById('tag').className p.appendChild(document.createTextNode(sText)) document.body.appendChild(p) pw=p.offsetWidth document.body.removeChild(p) if (x<(pw*1)*-1){x=divW} document.getElementById('tag').style.left=x+'px' scroll=setTimeout('startScroller()',speed) } function initScroller(){ if (document.getElementById && document.createElement && document.body.appendChild) { addControls() document.getElementById('controls').style.display='block' divW=document.getElementById('scroller').offsetWidth x=divW document.getElementById('tag').style.position='relative' document.getElementById('tag').style.left=divW+'px' var ss=document.getElementById('tag').childNodes for (i=0;i<ss.length;i++) {sText+=ss[i].nodeValue+" "} scroll=setTimeout('startScroller()',speed) } } function addLoadEvent(func) { if (!document.getElementById | !document.getElementsByTagName) return var oldonload = window.onload if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldonload() func() } } } addLoadEvent(initScroller) Děkuji |
||
fajzen Profil |
#2 · Zasláno: 27. 5. 2009, 13:14:21 · Upravil/a: fajzen
Nie som si úplne istý, je to dosť rozsiahly kód a bez HTML si to neviem odskúšať (išlo by to uhádnuť z toho kódu, ale to sa mi nechce :) ), ale myslím, že by stačilo zmeniť riadok 92:
x=divW toto číslo predstavuje aktuálny CSS atribút left- vzdialenosť od ľavého okraja a na začiatku je nastavené na šírku elementu scroller, takže je hneď za ním treba ho zmeniť buď na nejaké konkrétne číslo x=300 alebo toto číslo nejak vypočítať, napr: x=eval(document.getElementById('scroller').offsetWidth)/2 - eval(document.getElementById('tag').offsetWidth)/2; (týmto kódom si nie som úplne istý, ale ako som už písal, nemám to ako ľahko otestovať...) EDIT: treba potom zmeniť aj riadok 94: document.getElementById('tag').style.left=divW+'px' na document.getElementById('tag').style.left=x+'px' |
||
Chamurappi Profil |
#3 · Zasláno: 27. 5. 2009, 13:30:25
Reaguji na fajzen:
To už je poněkolikáté, co tě vidím používat zlo jménem eval, navíc zcela zbytečně. Proč se ho neštítíš? |
||
fajzen Profil |
#4 · Zasláno: 27. 5. 2009, 13:48:42
Chamurappi
neviem o tom, že by eval bolo zlo, ale rád sa nechám poučiť v tomto prípade to možno zbytočné je, ale nebol som si istý a ublížiť to nemôže (asi) |
||
_es Profil |
#5 · Zasláno: 28. 5. 2009, 22:51:26
fajzen„neviem o tom, že by eval bolo zlo, ale rád sa nechám poučiť “
http://zdrojak.root.cz/clanky/javascript-vykonnostne-neprijemne-konstrukce/ |
||
Časová prodleva: 15 let
|
0