webForumDet fria alternativet

Får undefined med lajven

ASP

24 svar · 769 visningar · startad av WebbisNet

Medlem sedan feb. 20032 027 inlägg
Frågan#1

Utan data ska det stå inga data finns....det blir bara en . och syns ingen textruta, när jag väl har en post visas inte inlägget utan det står undefined. Det finns inga felmeddelanden så jag vet inte var felet ligger.....har fetmarkerat stället där texten ska loopas ut

<!-- #include virtual="/include/dbconn.asp" -->
<!-- #include virtual="/include/functions.asp" -->
<!-- #include virtual="/include/variabler.asp" -->
<!-- #include virtual="/include/rs.asp" -->

<%
'Set user=objConn.Execute("SELECT * FROM tblUsers_messagescroll where Visar=1 order by mCounter DESC limit 12")

Set user=objConn.Execute("SELECT * FROM tblUsers INNER JOIN tblUsers_messagescroll ON tblUsers.userID = tblUsers_messagescroll.userID where Visar=1 order by mCounter Desc limit 12")

'objConn.Execute("delete from tblUsers_messagescroll where messageTime > DateAdd('n', -20, Now())")
%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body style="<%=mainBGColor%>">
<link type="text/css" rel="StyleSheet" href="/include/css/style.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>

<title>Lajven</title>

<style type="text/css">
#memoryticker{
width: 800px;
height:20px;

font: bold 8px Arial;
/*Tip: add in height attribute here for multiple line scroller*/
border: 0px solid black;
padding: 0px;
/*Change 0.7 below to a different number if desired (0.7=0.7 seconds)*/
/*Remove below line to remove transitional effect in IE. Below line should always appear last within this CSS*/
filter: progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=2.0 Duration=1,5)
}
</style>

</head>
<body leftmargin="0" bgcolor="#D4E6EA">

<table bgcolor="#D4E6EA" style="border="0" cellpadding="0" cellspacing="0">
<tr>

<td style="border-style:dotted; border-color:#000000; border-width:1px;" bgcolor="#FFFFFF" align="left">
<script type="text/javascript">

/***********************************************
* Memory Ticker script- © Dynamic Drive DHTML code library ([url]www.dynamicdrive.com[/url])
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at [url]http://www.dynamicdrive.com/[/url] for full source code
***********************************************/

//configure tickercontents[] to set the messges you wish be displayed (HTML codes accepted)
//Backslash any apostrophes within your text (ie: I\'m the king of the world!)

[B]
<%If user.EOF then
	Response.Write "Inga data finns"
Else
	response.write "var tickercontents=new Array()"
i=0
	Do until user.eof
	%>
tickercontents[<%=i%>]='<a class="menu" target="_top" href="/view.asp?userID=<%=user("userID")%>"><span style="font-size:11px; color:333333;"><%=user("username")%>:&nbsp; <%=LCase(replace(replace(left(Mid(Server.HTMLEncode(user("message")),15),108),"'","#"),vbCrLf,"&nbsp;"))%></span></a>'

<%
i=i+1
user.MoveNext: Loop
	End If%>[/B]

var persistlastviewedmsg=1 //should messages' order persist after users navigate away (1=yes, 0=no)?
var persistmsgbehavior="onload" //set to "onload" or "onclick".

//configure the below variable to determine the delay between ticking of messages (in miliseconds):
var tickdelay=10000

////Do not edit pass this line////////////////

var divonclick=(persistlastviewedmsg && persistmsgbehavior=="onclick")? 'onClick="savelastmsg()" ' : ''
var currentmessage=0

function changetickercontent(){
if (crosstick.filters && crosstick.filters.length>0)
crosstick.filters[0].Apply()
crosstick.innerHTML=tickercontents[currentmessage]
if (crosstick.filters && crosstick.filters.length>0)
crosstick.filters[0].Play()
currentmessage=(currentmessage==tickercontents.length-1)? currentmessage=0 : currentmessage+1
var filterduration=(crosstick.filters&&crosstick.filters.length>0)? crosstick.filters[0].duration*1000 : 0
setTimeout("changetickercontent()",tickdelay+filterduration)
}

function beginticker(){
if (persistlastviewedmsg && get_cookie("lastmsgnum")!="")
revivelastmsg()
crosstick=document.getElementById? document.getElementById("memoryticker") : document.all.memoryticker
changetickercontent()
}

function get_cookie(Name) {
var search = Name + "="
var returnvalue = ""
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset)
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}

function savelastmsg(){
document.cookie="lastmsgnum="+currentmessage
}

function revivelastmsg(){
currentmessage=parseInt(get_cookie("lastmsgnum"))
currentmessage=(currentmessage==0)? tickercontents.length-1 : currentmessage-1
}

if (persistlastviewedmsg && persistmsgbehavior=="onload")
window.onunload=savelastmsg

if (document.all||document.getElementById)
document.write('<div id="memoryticker" '+divonclick+'></div>')
if (window.addEventListener)
window.addEventListener("load", beginticker, false)
else if (window.attachEvent)
window.attachEvent("onload", beginticker)
else if (document.all || document.getElementById)
window.onload=beginticker

</script>

</td>
</tr>
</table>
   
</body>
</html>
Medlem sedan okt. 2007446 inlägg
#2

om det inte finns några poster så borde ju "inga data finns" skrivas ut, har du kollat källkoden på den genererade sidan? javascriptet kommer ju köras även om du inte har några poster. Hur ser den genererade källan ut när du HAR poster som borde loopas ut?

(för övrigt så borde du rätta till din html kod lite samt ta bort javascriptet
MM_reloadPage(init) eftersom den justerar lite dumheter som netscape 4 hade för sig, om jag inte missminner mig, dvs helt onödigt att ha med den)

Medlem sedan feb. 20032 027 inlägg
#3

med data står det

var tickercontents=new Array()
tickercontents[0]='<a class="menu" target="_top" href="/view.asp?userID=1"><span style="font-size:11px; color:333333;">stene:  jag välkomnar alla medlemmar till nya kamrat.stene.nu</span></a>'

i koden men undefined som resultat på sidan

Medlem sedan okt. 2007446 inlägg
#4

jag gjorde en snabb test men bytte ut din "databasloop" mot en for-loop (eftersom jag inte har din db )

var tickercontents=new Array()
<%
For i=0 to 10%>
	tickercontents[<%=i%>]='<a class="menu" target="_top" href="/view.asp?userID=1"><span style="font-size:11px; color:333333;">stene:&nbsp; jag välkomnar alla medlemmar till nya kamrat.stene.nu <%=i%></span></a>'
	
<%
next

dvs jag skriver ut exakt det du får ut fast med värdet av i efter så man ser skillnad och det funkar, jag tror snarare problemet ligger i att resterande HTML är så felaktig så att sidan inte funkar

Medlem sedan feb. 20032 027 inlägg
#5

eftersom det inte är så mycket html utan enbart ett stort script och lite asp så kan jag inte se vad som är fel, vilken del tror du det är som felar?

Medlem sedan okt. 2007446 inlägg
#6

ptja när jag kopierade in koden i dreamweaver så blev det rätt tydligt att det fanns en massa fel eftersom färgkodningen blev helt rubbad;)
men några snabba fel man ser direkt är att du har fel antal body taggar.
Du har en direkt under <html>
sen kommer det en massa saker som skall ligga i <head> men du har ingen start-tagg för just head, däremot en sluttagg och sen en ny bodytagg

tabellen är har dessutom ett fel i sig
style="border="0" ser du felet?

Medlem sedan dec. 20025 483 inlägg
#7

Det finns två alternativa lösningar på problemet:

  1. Skriv ut ett semikolon efter varje JavaScript-rad. Alltså response.write "var tickercontents=new Array();" och tickercontents[<%=i%>]='...';

  2. Lägg in radbrytningar med vbCrLf efter varje JavaScript-rad så att inte hela rasket skrivs som en enda lång sträng.

Medlem sedan jan. 20023 327 inlägg
#8

WebbistNet: kör du bara med "copy and paste"? Du verkar inte ha så bra koll på det du gör.

Medlem sedan feb. 20032 027 inlägg
#9

såg alla slarvfel och har rättat till dem men resultatet är detsamma, undrar vad som kan fela när det inte var det....hmmmmmm

Medlem sedan feb. 20032 027 inlägg
#10

Compusa skrev:

WebbistNet: kör du bara med "copy and paste"? Du verkar inte ha så bra koll på det du gör.

scriptet har funkat innan på förra versionen av communityt som jag hade

Medlem sedan feb. 20032 027 inlägg
#11

jag har byggt html sidor från grunden sedan -96 och har alltid byggt dem i anteckningar och slarvfel kan man alltid göra, enda gången jag kör med copy and paste är när jag ska lägga in färdiga script

Medlem sedan okt. 2007446 inlägg
#12

hur ser den genererade källkoden ut nu då?
för när jag testar det så funkar det både i IE och Firefox

Medlem sedan feb. 20032 027 inlägg
#13

rhdf skrev:

hur ser den genererade källkoden ut nu då?
för när jag testar det så funkar det både i IE och Firefox

<!--<meta http-equiv="page-enter" content="blendtrans(duration=1)">-->

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<title>Lajven</title>
<head>
<link type="text/css" rel="StyleSheet" href="/include/css/style.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
#memoryticker{
width: 800px;
height:20px;

font: bold 8px Arial;
/*Tip: add in height attribute here for multiple line scroller*/
border: 0px solid black;
padding: 0px;
/*Change 0.7 below to a different number if desired (0.7=0.7 seconds)*/
/*Remove below line to remove transitional effect in IE. Below line should always appear last within this CSS*/
filter: progid:DXImageTransform.Microsoft.GradientWipe(GradientSize=2.0 Duration=1,5)
}
</style>
</head>
<body style="background-color:#CCCCCC;">

<table bgcolor="#D4E6EA" style="border=0" cellpadding="0" cellspacing="0">

<tr>
<td style="border-style:dotted; border-color:#000000; border-width:1px;" bgcolor="#FFFFFF" align="left">
<script type="text/javascript">

/***********************************************
* Memory Ticker script- © Dynamic Drive DHTML code library ([url]www.dynamicdrive.com[/url])
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at [url]http://www.dynamicdrive.com/[/url] for full source code
***********************************************/

//configure tickercontents[] to set the messges you wish be displayed (HTML codes accepted)
//Backslash any apostrophes within your text (ie: I\'m the king of the world!)

var tickercontents=new Array();
tickercontents[1]='<a class="menu" target="_top" href="/view.asp?userID=1"><span style="font-size:11px; color:333333;">stene:&nbsp; testar</span></a>;' 

tickercontents[2]='<a class="menu" target="_top" href="/view.asp?userID=1"><span style="font-size:11px; color:333333;">stene:&nbsp; jag v&#228;lkomnar alla medlemmar till nya kamrat.stene.nu</span></a>;' 

var persistlastviewedmsg=1 //should messages' order persist after users navigate away (1=yes, 0=no)?
var persistmsgbehavior="onload" //set to "onload" or "onclick".

//configure the below variable to determine the delay between ticking of messages (in miliseconds):
var tickdelay=10000

////Do not edit pass this line////////////////

var divonclick=(persistlastviewedmsg && persistmsgbehavior=="onclick")? 'onClick="savelastmsg()" ' : ''
var currentmessage=0

function changetickercontent(){
if (crosstick.filters && crosstick.filters.length>0)
crosstick.filters[0].Apply()
crosstick.innerHTML=tickercontents[currentmessage]
if (crosstick.filters && crosstick.filters.length>0)
crosstick.filters[0].Play()
currentmessage=(currentmessage==tickercontents.length-1)? currentmessage=0 : currentmessage+1
var filterduration=(crosstick.filters&&crosstick.filters.length>0)? crosstick.filters[0].duration*1000 : 0
setTimeout("changetickercontent()",tickdelay+filterduration)
}

function beginticker(){
if (persistlastviewedmsg && get_cookie("lastmsgnum")!="")
revivelastmsg()
crosstick=document.getElementById? document.getElementById("memoryticker") : document.all.memoryticker
changetickercontent()
}

function get_cookie(Name) {
var search = Name + "="
var returnvalue = ""
if (document.cookie.length > 0) {
offset = document.cookie.indexOf(search)
if (offset != -1) {
offset += search.length
end = document.cookie.indexOf(";", offset)
if (end == -1)
end = document.cookie.length;
returnvalue=unescape(document.cookie.substring(offset, end))
}
}
return returnvalue;
}

function savelastmsg(){
document.cookie="lastmsgnum="+currentmessage
}

function revivelastmsg(){
currentmessage=parseInt(get_cookie("lastmsgnum"))
currentmessage=(currentmessage==0)? tickercontents.length-1 : currentmessage-1
}

if (persistlastviewedmsg && persistmsgbehavior=="onload")
window.onunload=savelastmsg

if (document.all||document.getElementById)
document.write('<div id="memoryticker" '+divonclick+'></div>')
if (window.addEventListener)
window.addEventListener("load", beginticker, false)
else if (window.attachEvent)
window.attachEvent("onload", beginticker)
else if (document.all || document.getElementById)
window.onload=beginticker

</script>
</td>
</tr>
</table>
</body>
</html>
Medlem sedan dec. 20025 483 inlägg
#14

Troligtvis irrelevant i det här fallet eftersom radbrytningar lagts till (dock påverkas presentationen), men semikolonen i slutet av raderna med tickercontents[N] skall ligga efter apostrofen - inte innan.

Medlem sedan okt. 2007446 inlägg
#15

ahaa

tickercontents[1]='....'
tickercontents[2]='....'

vad hände med tickercontents[0]
det är därför den gnäller eftersom arrayers första element är "nummer 0"
den hittar ju inte den eftersom den inte finns =undefined

enligt koden du först postade så satte du ju i till noll och räknade upp den EFTER att du stoppat in posten i tickercontents, dvs första posten skulle få 0. Har du ändrat det nu?

Medlem sedan feb. 20032 027 inlägg
#16

satte 1 för att testa

var tickercontents=new Array();
tickercontents[0]='<a class="menu" target="_top" href="/view.asp?userID=1"><span style="font-size:11px; color:333333;">stene:&nbsp; testar</span></a>;' 

tickercontents[1]='<a class="menu" target="_top" href="/view.asp?userID=1"><span style="font-size:11px; color:333333;">stene:&nbsp; jag v&#228;lkomnar alla medlemmar till nya kamrat.stene.nu</span></a>;'

är ingen skillnad med 0 även om det ska börja på noll

Medlem sedan okt. 2007446 inlägg
#17

kolla på http://fjolnir.ebpatour.eu/tickertest.html
det där är den EXAKT den kod du postade här den funkar för mig
enda felet med den är att semikolonet sitter ett steg fel, men det funkar tydligen utan det

Medlem sedan feb. 20032 027 inlägg
#18

och här är vad jag får
http://kamrat.stene.nu/lajv/smsmessage.asp

himla lustigt att det går för dig men inte för mig

Medlem sedan okt. 2007446 inlägg
#19

din funkar för mig med

Medlem sedan feb. 20032 027 inlägg
#20

nu blir jag ännu mer konfunderad, vad har du som jag inte har då????

hos mig funkar din men inte min, hos dig funkar båda

270 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
132 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)