Aber selbstverständlich kann man Javascript-Code per output ausgeben. Man muss nur darauf achten dass die Anführungszeichen richtig escaped sind. Wird für den output-Befehl das doppelte Anführungszeichen benutzt ("bla"), muss dieses im Text escaped werden ("bla\"blubb\" ")und das einfache Anführungszeicheh bleibt wie es ist ("bla'blubb' ").
Zur Kontrolle sollte man sich dann den generierten html-Quelltext ansehen.
Ich nehme für die oben genannte Aufgabenstellung übrigens gerne den Rasten-Code aus Talions Wohnviertel. Dafür wird allerdings die DS V3 benötigt.
So ist das z.B. bei meiner
Hafen-Version auf speziellen Wunsch von Kaltenstayn drin.
Man kann das natürlich auch als Funktion bauen. Wer den folgenden Code allgemeiner haben will sollte $str_lnk auch noch als Parameter übergeben.
$this->bbcode_second_pass_code('', '
/**
* @desc Gibt einen Countdown aus und erstellt nach Ablauf die Links zum finish-Teil innerhalb des run-Hooks
*
* @param int Dauer in Sekunden
* @param string Text für den Counter
* @param string Text für die nach Ablauf erscheinende Messagebox
* @param string Überschrift für die Messagebox
* @return Javascript-Output für Countdown
* @author Talions Rasten-Code aus dem neuen Wohnviertel
*/
function quest_countdown($int_timecost,$str_counttext,$str_endtext,$str_endhead)
{
global $session,$nav;
$session['getnd'] = time(); //hier noch ne andere Lösung finden
$str_lnk = 'quest.php?do=run&op=finish&quest='.$_GET['quest'];
addnav('',$str_lnk);
//Einen ausgeblendeten Link erstellen.
$nav.='<span id="extralink" style="display: none;">';
addnav('Weiter',$str_lnk);
$nav.='</span>';
output('`n`n`c<input type="button" value="" onclick="window.location.href=\''.$str_lnk.'\';" id="rest_but">`c
<script type="text/javascript">
var time = '.$int_timecost.';
counter();
function counter () {
var b = document.getElementById("rest_but");
var nav = document.getElementById("extralink");
if(time > 0) {
b.disabled = true;
b.value = "'.$str_counttext.'";
time--;
window.setTimeout("counter();",1000);
return;
}
b.disabled = false;
b.value = "Weiter!";
nav.style.visibility = "visible";
nav.style.display = "inline";
MessageBox.show("'.$str_endtext.'","'.$str_endhead.'");
}
</script>');
}
')