Archivlink: javarea.de Forum > JavaScript > prüfen ob jahr ein schaltjahr ist, update
Vollständigen Link anzeigen: javarea.de Forum > JavaScript > prüfen ob jahr ein schaltjahr ist, update

Pages: [1]

geschrieben von okley am 28.04.2005 - 19:41
hallo zusammen
ich habe glaube ich ein script von javarea.de verwendet um zu testen ob ein jahr ein schaltjahr ist oder nicht. was ich sicher weiss ist, dass dieses javascript nicht fehlerfrei war

ich habe hier ein script, welches meinen tests standhielt und den regeln des gregorianischen kalenders entspricht. dieses script erstellt einem gleich eine option-liste für ein listenfeld...

HTML-Quelltext
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: 
/*
	 * @author Ueli Kunz
	 * @date 27. April 2005
	 * @param int m_ index des monats, von 1 -12
	 * @param int y_ index des jahres, z.b. 1950 oder 2003
	 * @return liste html-select-listenfeld mit den anzahl tagen als optionen zur auswahl wird in toUpdate geschrieben
	*/
/*
 * Usage
	  <span name="frmDay" id='frmDay'><select name="frmDay"><FMSEL_DAY/></select></span>
	  <select name="frmMonth" 
	    onChange="javascript:generateDaysByMonth(document.frmKundebearbeiten.frmMonth.options[document.frmKundebearbeiten.frmMonth.options.selectedIndex].value, document.frmKundebearbeiten.frmYear.options[document.frmKundebearbeiten.frmYear.options.selectedIndex].value,'frmDay');"
	  ><FRMSEL_MONTH/></select>
	  <select name="frmYear"
	  	onChange="javascript:generateDaysByMonth(document.frmKundebearbeiten.frmMonth.options[document.frmKundebearbeiten.frmMonth.options.selectedIndex].value, document.frmKundebearbeiten.frmYear.options[document.frmKundebearbeiten.frmYear.options.selectedIndex].value,'frmDay');"
	  ><FRMSEL_YEAR/></select>
*/
	function generateDaysByMonth(m_,y_,toUpdate){
	    var liste = "";
                y = y_;
		m = m_;
	    var n = '';
	    if((m == 1) || (m == 3) || (m == 5) || (m == 7) || (m == 8) || (m == 10) || (m == 12)) n = 31;
	    if((m == 4) || (m == 6) || (m == 9) || (m == 11)) n = 30;

	    if(m == 2) {
			if ((y % 400==0) || (y % 4==0 && y % 100 !=0)) n = 29;
			else n = 28;
			
	    }
		liste= "<select>";
	    for(var i = 1; i <= n; i++) {
	        if(i < 10) tag = "0" + i; else tag = i;
	        liste += "<option value="+i+">"+tag+"</option>";
	    }
		liste += "</select>";
	    document.getElementById(""+toUpdate+"").innerHTML= liste;
	}


ihr könnt diese funktion gerne in euer archiv aufnehmen ;)

geschrieben von Patrick am 28.04.2005 - 20:22
Dann sage ich mal, vielen Dank im Namen der Javarea.

geschrieben von René am 29.04.2005 - 11:15
@okley,

dein Code oben hat einen Bug!! der sagt mir beim Jahr 2005 das der Februar 29 Tage hat.

HTML-Quelltext
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: 
60: 
61: 
62: 
63: 
64: 
65: 
<html>
<head>

<script language="JavaScript" type="text/javascript">
<!--
/*

@author Ueli Kunz
@date 27. April 2005
@param int m index des monats, von 1 -12
@param int y index des jahres, z.b. 1950 oder 2003
@return liste html-select-listenfeld mit den anzahl tagen als optionen zur auswahl wird in toUpdate geschrieben

© geändert von René Marscheider
© date 29. April 2005
© http://www.janaserver.de/

*/

var jetzt = new Date();
var jahr  = jetzt.getFullYear();
var monat = jetzt.getMonth();
var tag   = jetzt.getDate();

function generateDaysByMonth(t, m, y, toUpdate)
{
	var m_arr = new Array('Januar', 'Februar', 'M&auml;rz', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September', 'Oktober', 'November', 'Dezember');

	var n = (((m == 1) || (m == 3) || (m == 5) || (m == 7) || (m == 8) || (m == 10) || (m == 12)) ? 31
	      : (((m == 4) || (m == 6) || (m == 9) || (m == 11)) ? 30
	      : ((m == 2) ? ((((y % 400 == 0) || (y % 4 == 0 && y % 100 != 0)) ? 29 : 28)) : 0)));

	var liste = '<select name="frmDay" size="1">';

	for (var i = 1; i <= n; i++)
		liste += '  <option value="' + i + '"' + ((i == t) ? ' selected="selected"' : '') + '>' + ((i < 10) ? '0' + i : i) + '</option>\r\n';

	liste += '</select>\r\n'
	       + '<select name="frmMonth" size="1" onchange="generateDaysByMonth(document.frmSchaltjahr.frmDay.options[document.frmSchaltjahr.frmDay.options.selectedIndex].value, document.frmSchaltjahr.frmMonth.options[document.frmSchaltjahr.frmMonth.options.selectedIndex].value, document.frmSchaltjahr.frmYear.options[document.frmSchaltjahr.frmYear.options.selectedIndex].value, \'' + toUpdate + '\');">\r\n';

	for (ma = 0; ma < m_arr.length; ma++)
		liste += '  <option value="' + (ma + 1) + '"' + (((ma + 1) == m) ? ' selected="selected"' : '') + '>' + m_arr[ma] + '</option>\r\n';

	liste += '</select>\r\n'
	       + '<select name="frmYear" size="1" onchange="generateDaysByMonth(document.frmSchaltjahr.frmDay.options[document.frmSchaltjahr.frmDay.options.selectedIndex].value, document.frmSchaltjahr.frmMonth.options[document.frmSchaltjahr.frmMonth.options.selectedIndex].value, document.frmSchaltjahr.frmYear.options[document.frmSchaltjahr.frmYear.options.selectedIndex].value, \'' + toUpdate + '\');">\r\n';

	for (j = 1900; j < 2035; j++)
		liste += '  <option value="' + j + '"' + ((j == y) ? ' selected="selected"' : '') + '>' + j + '</option>\r\n';

	liste += '</select>';

	document.getElementById(toUpdate).innerHTML = liste;
}
//-->
</script>

</head>
<body onload="generateDaysByMonth(tag, monat + 1, jahr, 'days')">

<form name="frmSchaltjahr">
  <div id="days">&nbsp;</div>
</form>

</body>
</html>

geschrieben von okley am 29.04.2005 - 15:27
hi

kannst du mir sagen wie du den bug behoben hast?, weil ich kann die funktion wie du sie hast nicht gebrauchen in meinem script ..., als script im scriptarchiv ist dein code jedoch besser

geschrieben von René am 29.04.2005 - 16:36
@okley,

siehe oben deinen Code bzw. blauer Text habe es dort schon geändert.


Powered by: JBB v.2.0.4 Copyright ©2000-2006, www.javarea.de.