| 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: 17 let
|
|||
0