Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Zeit runterzählen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-consult PHP Entwicklung
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Zeit runterzählen


 
Dragoni25
25-06-2010, 13:39 
 
hallo zusammen,

ich verzweifel seit tagen an einer sache. Undzwar versuche ich hier die Zeit runter zählen zu lassen. Soweit so gut klapt das auch schon jedoch wenn ich mehrere einträge habe sage ich mal 3 zählt er von den 3 den lezten runter und die anderen beiden nicht. Obwohl eine id zugewiesen ist.

Ich sitze da schon Wochen drann und weiss einfach nicht mehr weiter. Verliere sogar schon fast die lust daran.

Wäre klasse wenn mir hier jemand helfen könnte.


bin echt sprachlos

Hier nochmal den code


<table class="main" width="100%" align="center">
{foreach from=$transferlist item=trans}
<tr bgcolor="{cycle values="#eeeeee,#dddddd"}">
<td width="2%"><div id="{$trans.id}">{$trans.str_time_f}</div>
{literal}
<script type="text/javascript">
v=new Date();
var bx=document.getElementById({/literal}{$trans.id}{literal});

function t()
{
n=new Date();
s={/literal}{$trans.str_time}{literal}-Math.round((n.getTime()-v.getTime())/1000.);
m=0;
h=0;
if(s<0)
{
bx.innerHTML=""
}
else
{
if(s>59)
{
m=Math.floor(s/60);
s=s-m*60;
}
if(m>59)
{
h=Math.floor(m/60);
m=m-h*60;
}
if(s<10)
{
s="0"+s
}
if(m<10)
{
m="0"+m
}
bx.innerHTML=h+":"+m+":"+s+"";
}
window.setTimeout("t();",999)
}
window.onload=t;
</script>
{/literal}
</td>
<td width="82%">{$trans.msg}</td>
</tr>
{/foreach}
</table>

und hier mal der Quellcode des browsers

<table class="main" width="100%" align="center">
<tr bgcolor="#eeeeee">
<td width="2%"><div id="4121">02:09:43</div>


<script type="text/javascript">
v=new Date();
var bx=document.getElementById(4121);

function t()
{
n=new Date();
s=7783-Math.round((n.getTime()-v.getTime())/1000.);
m=0;
h=0;
if(s<0)
{
bx.innerHTML=""
}
else
{
if(s>59)
{
m=Math.floor(s/60);
s=s-m*60;
}
if(m>59)
{
h=Math.floor(m/60);
m=m-h*60;
}
if(s<10)
{
s="0"+s
}
if(m<10)
{
m="0"+m
}
bx.innerHTML=h+":"+m+":"+s+"";
}
window.setTimeout("t();",999)
}
window.onload=t;
</script>

</td>
<td width="82%"><font color='#00FF00'>Ihre Flotte wird bei 6:1:10 spionieren</font></td>
</tr>
<tr bgcolor="#dddddd">
<td width="2%"><div id="4120">02:07:28</div>

<script type="text/javascript">
v=new Date();
var bx=document.getElementById(4120);

function t()
{
n=new Date();
s=7648-Math.round((n.getTime()-v.getTime())/1000.);
m=0;
h=0;
if(s<0)
{
bx.innerHTML=""
}
else
{
if(s>59)
{
m=Math.floor(s/60);
s=s-m*60;
}
if(m>59)
{
h=Math.floor(m/60);
m=m-h*60;
}
if(s<10)
{
s="0"+s
}
if(m<10)
{
m="0"+m
}
bx.innerHTML=h+":"+m+":"+s+"";
}
window.setTimeout("t();",999)
}
window.onload=t;
</script>


</td>
<td width="82%"><font color='#00FF00'>Ihre Flotte wird bei 6:1:10 spionieren</font></td>
</tr>
</table>



Vileicht kann mir hier jemand helfen

lg
Dragon

 
onemorenerd
25-06-2010, 13:53 
 
Der Browser führt sofort alle Javascript-Blöcke aus - vermutlich in der Reihenfolge wie sie im Quelltext stehen. Beim ersten Codestück wird eine Variable bx angelegt. Beim zweiten Codestück wird sie jedoch mit einem neuen Wert überschrieben und beim dritten abermals.

Verwende für jeden Abschnitt eindeutig benannte Variablen, am besten nicht global, so dass jeder Codeblock für sich isoliert läuft.

Und dann solltest du dich schlau machen, wie man Eventhandler, insbesonder für window.onload richtig registriert. window.onload ist so wie du es verwendest nämlich auch eine globale Variable, die dur in jedem Codeblock wieder überschreibst.

 
AmicaNoctis
25-06-2010, 13:57 
 
Hallo und willkommen im Forum,

serverseitigen Code wie z. B. Smarty wollen wir in diesem Forum nicht sehen. Das Problem ist nicht ausführlich genug beschrieben und auch einen Vergleich von gewünschtem und tatsächlichem Verhalten stelle ich mir nachvollziehbarer vor.

Bitte überarbeite deinen Beitrag nochmal und beachte dabei die Forenregeln, dann sehen wir weiter.

Edit: da war wohl jemand schneller.

Gruß,

Amica

 
Dragoni25
25-06-2010, 13:58 
 
erlisch gesagt habe ich das jetzt nicht verstanden was du damit meinst. In einem anderen forum hatte man mir gesagt das die id eindeutig ist bx ich müsste immer eine id zuweisen also nahm ich die id aus der datenbank mit bx{trans.id} aber das geht ja auch nicht.

 
onemorenerd
25-06-2010, 14:08 
 
In einem anderen forum hatte man mir gesagt das die id eindeutig ist bx ich müsste immer eine id zuweisen also nahm ich die id aus der datenbank mit bx{trans.id} aber das geht ja auch nicht.
Du musst alle Vorkommen von bx, auch die in der Funktion t so ändern und zusätzlich auch den Namen der Funktion auf diese Art eindeutig machen. Stell es dir so vor: Funktionen sind in Javascript auch nur Variablen und mit dem wiederholten Definieren von t() überschreibst du vorherige Definitionen. Letztenendes existiert also nur das t() mit dem bx* wo * die letzte trans.id ist.

Eigentlich solltest du die Funktion nur einmal im Quelltext haben und mit entsprechenden Parametern versehen, so dass du sie aus jedem Codeblock aufrufen kannst und dabei bx* u.w. übergibst.

Damit ist jetzt alles gesagt und weil Crosspostings unanständig sind, bin ich hier raus!

 
Dragoni25
25-06-2010, 14:33 
 
naja hilft mir auch nicht wirklich.... Account bitte löschen


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:36 Uhr.