Om du nu är säker på att felet inte ligger i php-koden - varför postar du då i php-forumet?
Flyttas.
15 svar · 479 visningar · startad av vagann
hej jag tänkte använda denna script (http://www.dynamicdrive.com/dynamicindex2/crosstick.htm) in min php sida men istället för meddelande så står det "undefined" har ingen aning om var felet ligger.
där meddelande visar (body.php ) har jag
<script type="text/javascript">
//new pausescroller(name_of_message_array, CSS_ID, CSS_classname, pause_in_miliseconds)
new pausescroller(pausecontent2, "pscroller2", "someclass", 2000)
</script>
i page.php
<script type="text/javascript">
/*Example message arrays for the two demo scrollers*/
var pausecontent2=new Array()
pausecontent2=<?php echo'$page_livemess';?>
</script>
<script type="text/javascript">
/***********************************************
* Pausing up-down scroller- © Dynamic Drive (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit http://www.dynamicdrive.com/ for this script and 100s more.
***********************************************/
function pausescroller(content, divId, divClass, delay){
this.content=content //message array content
this.tickerid=divId //ID of ticker div to display information
this.delay=delay //Delay between msg change, in miliseconds.
this.mouseoverBol=0 //Boolean to indicate whether mouse is currently over scroller (and pause it if it is)
this.hiddendivpointer=1 //index of message array for hidden div
document.write('<div id="'+divId+'" class="'+divClass+'" style="position: relative; overflow: hidden"><div class="innerDiv" style="position: absolute; width: 100%" id="'+divId+'1">'+content[0]+'</div><div class="innerDiv" style="position: absolute; width: 100%; visibility: hidden" id="'+divId+'2">'+content[1]+'</div></div>')
var scrollerinstance=this
if (window.addEventListener) //run onload in DOM2 browsers
window.addEventListener("load", function(){scrollerinstance.initialize()}, false)
else if (window.attachEvent) //run onload in IE5.5+
window.attachEvent("onload", function(){scrollerinstance.initialize()})
else if (document.getElementById) //if legacy DOM browsers, just start scroller after 0.5 sec
setTimeout(function(){scrollerinstance.initialize()}, 500)
}
// -------------------------------------------------------------------
// initialize()- Initialize scroller method.
// -Get div objects, set initial positions, start up down animation
// -------------------------------------------------------------------
pausescroller.prototype.initialize=function(){
this.tickerdiv=document.getElementById(this.tickerid)
this.visiblediv=document.getElementById(this.tickerid+"1")
this.hiddendiv=document.getElementById(this.tickerid+"2")
this.visibledivtop=parseInt(pausescroller.getCSSpadding(this.tickerdiv))
//set width of inner DIVs to outer DIV's width minus padding (padding assumed to be top padding x 2)
this.visiblediv.style.width=this.hiddendiv.style.width=this.tickerdiv.offsetWidth-(this.visibledivtop*2)+"px"
this.getinline(this.visiblediv, this.hiddendiv)
this.hiddendiv.style.visibility="visible"
var scrollerinstance=this
document.getElementById(this.tickerid).onmouseover=function(){scrollerinstance.mouseoverBol=1}
document.getElementById(this.tickerid).onmouseout=function(){scrollerinstance.mouseoverBol=0}
if (window.attachEvent) //Clean up loose references in IE
window.attachEvent("onunload", function(){scrollerinstance.tickerdiv.onmouseover=scrollerinstance.tickerdiv.onmouseout=null})
setTimeout(function(){scrollerinstance.animateup()}, this.delay)
}
// -------------------------------------------------------------------
// animateup()- Move the two inner divs of the scroller up and in sync
// -------------------------------------------------------------------
pausescroller.prototype.animateup=function(){
var scrollerinstance=this
if (parseInt(this.hiddendiv.style.top)>(this.visibledivtop+5)){
this.visiblediv.style.top=parseInt(this.visiblediv.style.top)-5+"px"
this.hiddendiv.style.top=parseInt(this.hiddendiv.style.top)-5+"px"
setTimeout(function(){scrollerinstance.animateup()}, 50)
}
else{
this.getinline(this.hiddendiv, this.visiblediv)
this.swapdivs()
setTimeout(function(){scrollerinstance.setmessage()}, this.delay)
}
}
// -------------------------------------------------------------------
// swapdivs()- Swap between which is the visible and which is the hidden div
// -------------------------------------------------------------------
pausescroller.prototype.swapdivs=function(){
var tempcontainer=this.visiblediv
this.visiblediv=this.hiddendiv
this.hiddendiv=tempcontainer
}
pausescroller.prototype.getinline=function(div1, div2){
div1.style.top=this.visibledivtop+"px"
div2.style.top=Math.max(div1.parentNode.offsetHeight, div1.offsetHeight)+"px"
}
// -------------------------------------------------------------------
// setmessage()- Populate the hidden div with the next message before it's visible
// -------------------------------------------------------------------
pausescroller.prototype.setmessage=function(){
var scrollerinstance=this
if (this.mouseoverBol==1) //if mouse is currently over scoller, do nothing (pause it)
setTimeout(function(){scrollerinstance.setmessage()}, 100)
else{
var i=this.hiddendivpointer
var ceiling=this.content.length
this.hiddendivpointer=(i+1>ceiling-1)? 0 : i+1
this.hiddendiv.innerHTML=this.content[this.hiddendivpointer]
this.animateup()
}
}
pausescroller.getCSSpadding=function(tickerobj){ //get CSS padding value, if any
if (tickerobj.currentStyle)
return tickerobj.currentStyle["paddingTop"]
else if (window.getComputedStyle) //if DOM2
return window.getComputedStyle(tickerobj, "").getPropertyValue("padding-top")
else
return 0
}
</script>
jag är 100% att felet ligger inte php scripten eftersom jag har haft den i typ en månad och fungerar felfritt. säg till om ni behöver se php delen och ge förslag om ni känner till en lättare lösning :) !
tacksam för hjälpen :bire
Om du nu är säker på att felet inte ligger i php-koden - varför postar du då i php-forumet?
Flyttas.
hehe sant , jag råkade posta i php forumet.. egentligen så skulle jag posta nåt annat men sen posta detta problem:) sorry !!
hehe sant , jag råkade posta i php forumet.. egentligen så skulle jag posta nåt annat men sen posta detta problem:) sorry !!
Inga problem! :)
Till att börja med skulle jag se till att du har citationstecken runt strängen där du definierar pausecontent2:
pausecontent2="<?php echo'$page_livemess';?>";
Sen är det bra att avsluta statements (el. rader) i javascriptkoden med semikolon.
mvh
jah tack nu försvann "undefined" , men när jag la denna kod
pausecontent2="<?php echo '$page_livemess';?>";
så började den stava ordet "$page_livemess" bokstav efter bokstav, så jag modiferade till
pausecontent2="<?php echo $page_livemess ;?>";
eftersom det är en funktion som vi anropar, men tyvär så försvann javascripten(det som visar meddelandet), gjorde jag nåt fel ?
Du får nog kontrollera det som skickas till webbläsaren - vi kan inte gissa vad $page_livemess innehåller. Så: visa källa i webbläsaren, och kolla hur resultatet ser ut.
mvh
det såg ut så här i internet explorers orginalkälla
<script type="text/javascript">
/*Example message arrays for the two demo scrollers*/
var pausecontent2=new Array()
pausecontent2="<img src="images/live.gif" /><b> tester: </b>hhahahha test ";
</script>
det är det som bör visas , men varför syns den inte då ?
Då kan man se att det är citationstecknen som förstör - det första inuti din <img>-tagg bryter ju javascript-strängen. Prova att använda apostrofer runt javascript-strängen istället (men då måste du vara säker på att inga sådana ingår i $page_livemess).
pausecontent2='<?php echo $page_livemess ;?>';
forfarande stavar till "<img src="images/live.gif" /><b> tester: </b>hhahahha test " bokstav efter bokstav. jag vet inte men har en känsla av att problemet är på grund av array som ingår i scripten
jaha :) , men hur gör vi så att den ger en hel mening?
sätt det i en javascripts array
pausecontent2=['<?php echo $page_livemess ;?>'];
vet inte vad din $page_livemess innehåller, men om det är fler än ett meddelande så få du ju bygga upp den från PHP till en javascripts array och inte en sträng bara.
Till att börja med - om man kikar på originalkoden borde din kod se ut så här:
pausecontent2[0]='<?php echo $page_livemess ;?>';
Och: Har du inkluderat page.php i body.php?
Tack så mycket :D, testade båda två och de funkade väldigt bra!!! .... jag undrar om man kan göra så att texten går up och laddar en ny text bara när ett nytt meddelande har skickat.,eftersom just nu så är det samma text som laddas om och om igen?
Igen, tack så mycket!!
du kan även använda dig av .push(strängen), ge dig samma resultat... du få väl göra en ajax anrop och se om det finns något nytt ifrån servern och pushar in det i din array (du måste spara undan **new pausescroller(pausecontent2, "pscroller2", "someclass", 2000);**i en variabel så du kan komma åt dess .content och pushar in meddelanden där.
ojj , känner mig dum ... om sanningen ska fram så är jag värdelös i javascript, ajax och vidare ...så om du har lust att sättat dessa tankar i koder så skulle jag va tacksam :) men tack iaf