Avatar billede therichman Nybegynder
09. november 2006 - 08:53 Der er 4 kommentarer og
1 løsning

Vis dato med en uges mellemrum

Jeg skal poste en dato til et online-skole-skema, som så viser hvilke timer der vil være i den uge.
Jeg har fundet følgende kode til at finde datoen, i samme format som der bruges i online-skemaet:

<script language="JavaScript"><!--
var date = new Date();
var d  = date.getDate();
var day = (d < 10) ? '0' + d : d;
var m = date.getMonth() + 1;
var month = (m < 10) ? '0' + m : m;
var yy = date.getYear();
var year = (yy < 1000) ? yy + 1900 : yy;

document.write(month + "/" + day + "/" + year);
//--></script>


Problemet er at skemaet ikke viser fra dag til dag, men fra uge til uge, og derfor kan ovenstående kode ikke bruges. Her er eksempler på datoer fra skemaet:

11/6/2006  =    Viser skema fra 6/11 til 10/11
11/13/2006  =    Viser skema fra 13/11 til 17/11


Nogen der kan komme op med noget kode, der kan få skemaet for den rigtige uge frem?
Avatar billede jhe-ting Nybegynder
10. november 2006 - 04:04 #1
Jeg har strikket dette eksempel sammen til dig:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Dato test</title>
<script type="text/javascript"><!--
function gotoMonday(aDate){
    var date = new Date(aDate);
    var mandag = 1;
    var flyt = mandag - date.getDay();
    if (flyt==-5) flyt = 2; // lørdag vises næste uge.
    var d  = date.getDate() + flyt;
    date.setDate(d); // date er en mandag
    d = date.getDate();
    d = (d < 10) ? '0' + d : d;
    var m = date.getMonth() + 1;
    m = (m < 10) ? '0' + m : m;
    return m + "/" + d + "/" + date.getFullYear();
}

function demo(){
    var datoInd = document.getElementById("datoInd");
    var testOut = document.getElementById("testOut");
    testOut.innerHTML = gotoMonday(new Date(datoInd.value));
    return false;
}
//--></script>
</head>

<body>
<h1>Dato test</h1>
<p>Idag er datoen <script type="text/javascript">document.write(new Date());</script></p>
<p> Den aktuelle uge for idag starter
<script type="text/javascript"><!--
document.write(gotoMonday(new Date()));
//--></script>
</p>
<form onsubmit="return demo();" action="">
<p>
  Test-dato (mm/dd/yyyy): <input name="datoInd" id="datoInd" type="text" value="11/10/2006"/>
</p>
<input type="button" value="Demo!" name="demoButton" onclick="demo()" /> <p id="testOut">Skriv en dato i feltet</p>
</form>
</body>
</html>

Læg mærke til funktionen 'gotoMonday' 

;-)
Avatar billede therichman Nybegynder
10. november 2006 - 12:24 #2
Din kode virker, og jeg siger mange tak :D
Jeg kan dog ikke lige se hvordan jeg kan få det ind i følgende:

<input type="hidden" name="OldDDGetWeek" value="DATOEN SKAL STÅ HER">

Jeg har prøvet med følgende:
<input type="hidden" name="OldDDGetWeek" value="" + <script>gotoMonday(new Date());</script> + "">

gotoMonday(new Date()); giver godt nok den rette dato, men den bliver ikke postet.
Avatar billede jhe-ting Nybegynder
10. november 2006 - 15:03 #3
Du kan skrive det sådan:

<script type="text/javascript"><!--
var tag = '<input type="hidden" name="OldDDGetWeek" value="'+
          gotoMonday(new Date())+'">';
document.write(tag);
//--></script>
Avatar billede therichman Nybegynder
13. november 2006 - 20:20 #4
Ser umiddelbart ikke ud til at virke? Her er hele min kode:

<HTML>
<HEAD><TITLE>SkemaHack</TITLE></HEAD>

<script type="text/javascript"><!--
function gotoMonday(aDate){
    var date = new Date(aDate);
    var mandag = 1;
    var flyt = mandag - date.getDay();
    if (flyt==-5) flyt = 2; // lørdag vises næste uge.
    var d  = date.getDate() + flyt;
    date.setDate(d); // date er en mandag
    d = date.getDate();
    d = (d < 10) ? '0' + d : d;
    var m = date.getMonth() + 1;
    m = (m < 10) ? '0' + m : m;
    return m + "/" + d + "/" + date.getFullYear();
}

function demo(){
    var datoInd = document.getElementById("datoInd");
    var testOut = document.getElementById("testOut");
    testOut.innerHTML = gotoMonday(new Date(datoInd.value));
    return false;
}
//--></script>

<body onLoad="document.FrmCmdVisSkema.submit();">
<form name="FrmCmdVisSkema" method="POST" action="http://skema.randersts.dk/SkemaElev.asp" target=_self>
<input type="hidden" name="InLoginNr" value="67673">
<!--<input type="hidden" name="OldDDGetWeek" value="" + <script>gotoMonday(new Date());</script> + "">-->
<script type="text/javascript"><!--
var tag = '<input type="hidden" name="OldDDGetWeek" value="'+gotoMonday(new Date())+'">';
document.write(tag);
//--></script>

<!--<input type="hidden" name="OldDDGetWeek" value="11/06/2006">-->
<input type="submit" value="Se Skema">
</form>

</body>
</HTML>
Avatar billede jhe-ting Nybegynder
13. november 2006 - 21:14 #5
Efter overvejelse fandt jeg frem til en komplet løsning.

<HTML>
<HEAD><TITLE>SkemaHack</TITLE></HEAD>

<script type="text/javascript"><!--
function gotoMonday(){
    var date = new Date();
    var mandag = 1;
    var flyt = mandag - date.getDay();
    if (flyt==-5) flyt = 2;
    var d  = date.getDate() + flyt;
    date.setDate(d); // date er en mandag
    d = date.getDate();
    d = (d < 10) ? '0' + d : d;
    var m = date.getMonth() + 1;
    m = (m < 10) ? '0' + m : m;
    return m + "/" + d + "/" + date.getFullYear();
}
onload= function (){
    document.getElementById("OldDDGetWeek").setAttribute("value",gotoMonday());
    document.FrmCmdVisSkema.submit();
}
//--></script>

<body>
<form name="FrmCmdVisSkema" method="POST" action="http://skema.randersts.dk/SkemaElev.asp" target=_self>
<input type="hidden" name="InLoginNr" value="67673" />
<input type="hidden" name="OldDDGetWeek" value="mm/dd/yyyy" />
<input type="submit" value="Se Skema" />
</form>

</body>
</HTML>

<!-- (:P) -->
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester