Click to See Complete Forum and Search --> : help unknown code problem


coolguy
07-29-2003, 02:20 PM
when i click "last tip" up to 0 it gets an error

<html>

<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<style ID="AsstStyle">
BODY{font: messagebox;}
TD{font: messagebox;}
.clickable {color:darkblue; cursor:hand}
</style>
<title></title>
</head>

<body topmargin="4px" leftmargin="4px" SCROLL="no">

<table border="0" width="100%">
<tr>
<td ID=******* align="left" rowspan="2" width="34" valign="middle"><img ID=TipGif src="tips.gif" width="27"
height="36" alt="tips.gif (1045 bytes)"> </td>
<td ID=TipText width="90%" align="left"><strong>Did you know...</strong></td>
<td ID="GoLast" align="right" rowspan="2" nowrap>
<a href="javascript:goLast()" class="clickable" onmouseover="this.style.color='red'" onmouseout="this.style.color='darkblue'">Last tip</a>
<td ID="GoNext" align="right" width="50" rowspan="2" nowrap>
<a href="javascript:goNext()" class="clickable" onmouseover="this.style.color='red'" onmouseout="this.style.color='darkblue'">Next tip</a>

</tr>
<tr>
<td width="90%" align="left">

<div ID="Tip0" Style="display:none;">
1</div>

<div ID="Tip1" Style="display:none;">
2</div>

<div ID="Tip2" Style="display:none;">
3</div>

<div ID="Tip3" Style="display:none;">
4</div>

</td></tr>
</table>

<p><br class="userData" id="myData">
<script LANGUAGE="JavaScript" FOR="window" EVENT="onload">
Load();
</script><script>
var i=0;
var nTips=4;

function Load() {

var d = new Date();
i = ((d.getMonth() * 31) + d.getDate()) %nTips;
if (i==null) i=0;
eval("document.all.Tip"+i+".style.display=''");
}


function goNext()
{
eval("document.all.Tip"+i+".style.display='none'");
i=(((i%nTips)+1)%nTips);
eval("document.all.Tip"+i+".style.display=''");
}
function goLast()
{
eval("document.all.Tip"+i+".style.display='none'");
i=(((i%nTips)-1)%nTips);
eval("document.all.Tip"+i+".style.display=''");
}
</script> </p>
</body>
</html>


:confused: :confused: :confused:

Exuro
07-29-2003, 05:37 PM
Try changing your function goLast() to this:

function goLast()
{
eval("document.all.Tip"+i+".style.display='none'");
i=(((i%nTips)+(nTips-1))%nTips);
eval("document.all.Tip"+i+".style.display=''");
}

The logic made sense when I wrote it :-p... Anyway, I'm pretty sure it works just fine so that's all that matters, right?

Yogg
07-29-2003, 06:09 PM
Maybe with
document.getElementById('Tip'+i).style.display
?

Yogg
07-29-2003, 06:12 PM
And
i = (i+1)%nTips;
is enough.

Yogg
07-29-2003, 06:30 PM
I don't know why, but we have (-1)%4 == -1 !!!!
So we have to solve this problem by adding 4 each time to i :

<html>
<head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<style ID="AsstStyle">
BODY{font: messagebox;}
TD{font: messagebox;}
.clickable {color:darkblue; cursor:hand}
</style>
<title></title>
</head>

<body topmargin="4px" leftmargin="4px" SCROLL="no" onLoad="Load()">

<table border="0" width="100%">
<tr>
<td ID=******* align="left" rowspan="2" width="34" valign="middle"><img ID=TipGif src="tips.gif" width="27"
height="36" alt="tips.gif (1045 bytes)"> </td>
<td ID=TipText width="90%" align="left"><strong>Did you know...</strong></td>
<td ID="GoLast" align="right" rowspan="2" nowrap>
<a href="javascript:goLast()" class="clickable" onmouseover="this.style.color='red'" onmouseout="this.style.color='darkblue'">Last tip</a>
<td ID="GoNext" align="right" width="50" rowspan="2" nowrap>

<a href="javascript:goNext()" class="clickable" onmouseover="this.style.color='red'" onmouseout="this.style.color='darkblue'">Next tip</a>

</tr>
<tr>
<td width="90%" align="left">

<div id="Tip0" Style="display:none;">
1</div>

<div id="Tip1" Style="display:none;">
2</div>

<div id="Tip2" Style="display:none;">
3</div>

<div id="Tip3" Style="display:none;">
4</div>

</td></tr>
</table>

<p><br class="userData" id="myData">
<script LANGUAGE="JavaScript">
var i=0;
var nTips=4;

function Load() {

var d = new Date();
i = ((d.getMonth() * 31) + d.getDate()) %nTips;
if (i==null) i=0;
document.getElementById('Tip'+i).style.display='block';
}


function goNext()
{
document.getElementById('Tip'+i).style.display='none';
i=(i+5)%nTips;
alert();
document.getElementById('Tip'+i).style.display='block';
}
function goLast()
{
document.getElementById('Tip'+i).style.display='none';
i=(i+3)%nTips;
alert(i);
document.getElementById('Tip'+i).style.display='block';
}
</script> </p>
</body>
</html>

coolguy
07-30-2003, 02:42 PM
thatnk you good people :)

SlankenOgen
07-30-2003, 03:31 PM
(i+1)%nTips can be better manipulated with-

++i%nTips;

or

i++%nTips;

depending on whether you want to increment first then take the modulus (the former) or do the modulus first, then increment ( the latter ).