webForumDet fria alternativet

undefined istället för meddelande?

JavaScript

15 svar · 479 visningar · startad av vagann

Medlem sedan juli 2011171 inlägg
Frågan#1

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

Medlem sedan juni 200032 967 inlägg
#2

Om du nu är säker på att felet inte ligger i php-koden - varför postar du då i php-forumet?

Flyttas.

Medlem sedan juli 2011171 inlägg
#3

hehe sant , jag råkade posta i php forumet.. egentligen så skulle jag posta nåt annat men sen posta detta problem:) sorry !!

Medlem sedan juni 200032 967 inlägg
#4

vagann skrev:

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

Medlem sedan juli 2011171 inlägg
#5

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 ?

Medlem sedan juni 200032 967 inlägg
#6

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

Medlem sedan juli 2011171 inlägg
#7

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>&nbsp;&nbsp;tester: </b>hhahahha test&nbsp;";

</script>

det är det som bör visas , men varför syns den inte då ?

Medlem sedan juni 200032 967 inlägg
#8

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 ;?>';
Medlem sedan juli 2011171 inlägg
#9

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

Medlem sedan juni 20019 519 inlägg
#10

name_of_message_array gissar jag på att det kräver en array vilket

"hej" ge dig => ["h","e","j"]

Medlem sedan juli 2011171 inlägg
#11

jaha :) , men hur gör vi så att den ger en hel mening?

Medlem sedan juni 20019 519 inlägg
#12

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.

Medlem sedan juni 200032 967 inlägg
#13

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?

Medlem sedan juli 2011171 inlägg
#14

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!!

Medlem sedan juni 20019 519 inlägg
#15

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.

Medlem sedan juli 2011171 inlägg
#16

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

251 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)