Javascript x aantal functies
Ik en mn partner zitten weer es met een hersenkrakend probleem. Misschien zijn hier personen die ervaren zijn met Javascript?
Wat heb ik al voor mekaar:
- tijd en tijd later in een database
- een javascriptfunctie die het tijdsverschil laat aftellen
Wat wil ik voor mekaar krijgen:
In de game moeten mensen oneindig aanvallen kunnen doen, en ik wil de tijden laten zien hoelang de aanvallen nog duren. Ik moet dus alle vars(steeds dezelfde per aanval) door kunnen sturen naar een javascriptfunctie(die ik al heb) en die javascriptfunctie die moet mij dan in een div de tijden laten zien.
Ik heb alleen geen flauw idee hoe ik dit voor mekaar moet krijgen, hier een stukje code wat perfect werkt en wat ik had:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php
$gettimes = mysql_query("SELECT * FROM ..... WHERE ..... = '".$_SESSION['.....']."'");
$rowtimes = mysql_fetch_assoc($gettimes);
$targetYear = substr($rowtimes['.....'],0,4);
$targetMonth = substr($rowtimes['.....'],5,2);
$targetDay = substr($rowtimes['.....'],8,2);
$targetHour = substr($rowtimes['.....'],11,2);
$targetMinute = substr($rowtimes['.....'],14,2);
$targetSecond = substr($rowtimes['.....'],17,2);
$dateFormat = "Y-m-d H:i:s";
$targetDate = mktime($targetHour,$targetMinute,$targetSecond,$targetMonth,$targetDay,$targetYear);
$actualDate = time();
$secondsDiff = $targetDate - $actualDate;
$remainingDay = floor($secondsDiff/60/60/24);
$remainingHour = floor(($secondsDiff-($remainingDay*60*60*24))/60/60);
$remainingMinutes = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))/60);
$remainingSeconds = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))-($remainingMinutes*60));
$targetDateDisplay = date($dateFormat,$targetDate);
$actualDateDisplay = date($dateFormat,$actualDate);
?>
<script type="text/javascript">
var days = <?php echo $remainingDay; ?>
var hours = <?php echo $remainingHour; ?>
var minutes = <?php echo $remainingMinutes; ?>
var seconds = <?php echo $remainingSeconds; ?>
function setCountDown ()
{
if(seconds == 0 && minutes == 0 && hours == 0){
}
else{
seconds--;
}
if (seconds < 0){
minutes--;
seconds = 59
}
if (minutes < 0){
hours--;
minutes = 59
}
if (hours < 0){
days--;
hours = 23
}
document.getElementById("remain").innerHTML = "Je moet nog "+hours+":"+minutes+":"+seconds+" wachten.";
setTimeout ( "setCountDown()", 1000 );
}
</script>
$gettimes = mysql_query("SELECT * FROM ..... WHERE ..... = '".$_SESSION['.....']."'");
$rowtimes = mysql_fetch_assoc($gettimes);
$targetYear = substr($rowtimes['.....'],0,4);
$targetMonth = substr($rowtimes['.....'],5,2);
$targetDay = substr($rowtimes['.....'],8,2);
$targetHour = substr($rowtimes['.....'],11,2);
$targetMinute = substr($rowtimes['.....'],14,2);
$targetSecond = substr($rowtimes['.....'],17,2);
$dateFormat = "Y-m-d H:i:s";
$targetDate = mktime($targetHour,$targetMinute,$targetSecond,$targetMonth,$targetDay,$targetYear);
$actualDate = time();
$secondsDiff = $targetDate - $actualDate;
$remainingDay = floor($secondsDiff/60/60/24);
$remainingHour = floor(($secondsDiff-($remainingDay*60*60*24))/60/60);
$remainingMinutes = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))/60);
$remainingSeconds = floor(($secondsDiff-($remainingDay*60*60*24)-($remainingHour*60*60))-($remainingMinutes*60));
$targetDateDisplay = date($dateFormat,$targetDate);
$actualDateDisplay = date($dateFormat,$actualDate);
?>
<script type="text/javascript">
var days = <?php echo $remainingDay; ?>
var hours = <?php echo $remainingHour; ?>
var minutes = <?php echo $remainingMinutes; ?>
var seconds = <?php echo $remainingSeconds; ?>
function setCountDown ()
{
if(seconds == 0 && minutes == 0 && hours == 0){
}
else{
seconds--;
}
if (seconds < 0){
minutes--;
seconds = 59
}
if (minutes < 0){
hours--;
minutes = 59
}
if (hours < 0){
days--;
hours = 23
}
document.getElementById("remain").innerHTML = "Je moet nog "+hours+":"+minutes+":"+seconds+" wachten.";
setTimeout ( "setCountDown()", 1000 );
}
</script>
Deze code haalt dus 1 malig tijden op en haalt uren, minuten seconden los van mekaar... berekend het verschil en laat het aftellen. Wie me een goeie duw in de richting kan geven hoe ik die voor oneindige waardes voor mekaar kan krijgen ben ik eeuwig dankbaar. :D
~Tijs
Hoop dat je hiermee wat verder komt :)
Tim van Norde op 16/09/2011 12:30:58:
Je kunt van days hours seconds minutes arrays maken, en daar alle tijden inzetten. Dan moet je de divs opbouwen met bijvoorbeeld als id 'tijd_#', waar # voor een cijfer staat (uiteraard). Dan i.p.v. de div remains aan te passen, 'tijd_#' voor elke aanpassen.
Hoop dat je hiermee wat verder komt :)
Hoop dat je hiermee wat verder komt :)
Heb net es gekeken naar arrays in javascript... eerlijk gezegd heb ik nog nooit echt met arrays gewerkt(behalve de mysql_fetch_assoc arrays in php), hopelijk kom ik eruit. iig bedankt alvast! :D
EDIT:
Het werkt perfect maar 1 ding niet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<script type="text/javascript">
var days = new Array();
var hours = new Array();
var minutes = new Array();
var seconds = new Array();
<?php
for($i = 0; $i <= $numattacktimes-1; $i++)
{
echo "days[$i] = $rmnDayArr[$i];";
echo "hours[$i] = $rmnHourArr[$i];";
echo "minutes[$i] = $rmnMinutesArr[$i];";
echo "seconds[$i] = $rmnSecondsArr[$i];";
echo "var tot = $numattacktimes-1;";
} ?>
// jsArray now hold items from the phpArrays.
function setCountDown ()
{
var i=0;
for(i=0;i<=tot;i++)
{
if(seconds[i] == 0 && minutes[i] == 0 && hours[i] == 0)
{
window.location="<?php $PHP_SELF; ?>";
}
else
{
seconds[i]--;
}
if (seconds[i] < 0)
{
minutes[i]--;
seconds[i] = 59
}
if (minutes[i] < 0)
{
hours[i]--;
minutes[i] = 59
}
document.getElementById("remain"+i).innerHTML = ""+hours[i]+":"+((minutes[i] < 10) ? '0' + minutes[i] : minutes[i])+":"+((seconds[i] < 10) ? '0' + seconds[i] : seconds[i])+"<br />";
}
setTimeout ( "setCountDown()", 1000 );
}
</script>
var days = new Array();
var hours = new Array();
var minutes = new Array();
var seconds = new Array();
<?php
for($i = 0; $i <= $numattacktimes-1; $i++)
{
echo "days[$i] = $rmnDayArr[$i];";
echo "hours[$i] = $rmnHourArr[$i];";
echo "minutes[$i] = $rmnMinutesArr[$i];";
echo "seconds[$i] = $rmnSecondsArr[$i];";
echo "var tot = $numattacktimes-1;";
} ?>
// jsArray now hold items from the phpArrays.
function setCountDown ()
{
var i=0;
for(i=0;i<=tot;i++)
{
if(seconds[i] == 0 && minutes[i] == 0 && hours[i] == 0)
{
window.location="<?php $PHP_SELF; ?>";
}
else
{
seconds[i]--;
}
if (seconds[i] < 0)
{
minutes[i]--;
seconds[i] = 59
}
if (minutes[i] < 0)
{
hours[i]--;
minutes[i] = 59
}
document.getElementById("remain"+i).innerHTML = ""+hours[i]+":"+((minutes[i] < 10) ? '0' + minutes[i] : minutes[i])+":"+((seconds[i] < 10) ? '0' + seconds[i] : seconds[i])+"<br />";
}
setTimeout ( "setCountDown()", 1000 );
}
</script>
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<?php
$j = 0;
while($rowattacktimes2 = mysql_fetch_assoc($getattacktimes2))
{
echo '<div id="remain'.$j.'"><br />';
$j++;
}
?>
$j = 0;
while($rowattacktimes2 = mysql_fetch_assoc($getattacktimes2))
{
echo '<div id="remain'.$j.'"><br />';
$j++;
}
?>
Na het weergeven van de 1e timer geeft hij een error dat document.getelementsbyid('remain' + i) null is. Heb geen flauw idee waarom, iemand die nog kan helpen?
Gewijzigd op 16/09/2011 22:48:36 door Tijs Gerats