Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   undefined помогите плиз (https://javascript.ru/forum/misc/9357-undefined-pomogite-pliz.html)

robinner 12.05.2010 20:35

undefined помогите плиз
 
function calendar(m,y)
{
cal='<div>'+m+'</div>';
return cal;
}

возвращает undefined...
при то что
function calendar(m,y)
{
alert(m);
}
выводит два алерта, в первом переменная нормально высвечивается, а во втором undefined

что нужно сделать?

Gvozd 12.05.2010 20:39

Цитата:

Сообщение от robinner
выводит два алерта, в первом переменная нормально высвечивается, а во втором undefined

значит вы ф-цию вызываете два раза, и на второй раз ничего не передаете

robinner 12.05.2010 20:50

Как понять два раза вызываю?

HTML документ <html>
<head>
<title>Календарь</title>
<link rel="stylesheet" href="style.CSS" type="text/css" media="screen" />
<script src="calendar.js"></script>
</head>
<body>
<script language="javascript">
<!--
document.write(calendar());
//-->
</script>
</body>
</html>

JS документ

function calendar(m,y){
cal='<div>'+m+'</div>';
return cal;
}

subzey 12.05.2010 20:57

document.write(calendar()); // вызов функции без параметров
…
function calendar(m,y){ // m = undefined, y = undefined
cal='<div>'+m+'</div>'; // <div>undefined</div>
return cal;
}

robinner 12.05.2010 21:04

не, чтото не то...
значения присваиваются сразу,
var m=now.getMonth();
var y=now.getFullYear();
и потом по мере нажатия на кномки вперед назад меняется значение, оно
передает значение в функцию, я вот не могу понять чего оно 2 раза вызывается, просто я совсем новичок в JS

robinner 15.05.2010 17:19

Не могу допереть....как сделать чтобы она не вызывалась второй раз(((
помогите пожалуйста

micscr 15.05.2010 17:39

Цитата:

Сообщение от robinner (Сообщение 55331)
Не могу допереть....как сделать чтобы она не вызывалась второй раз(((

Если под этим
<script language="javascript">
<!--
document.write(calendar());
//-->
</script>

подразумевалось закомментировать код, то надо так:
<script language="javascript">
// document.write(calendar());
</script>

Octane 15.05.2010 17:44

micscr, эти HTML-комментарии в JavaScript-коде из далекого прошлого, когда браузеры, неподдерживающие скрипты, отображали содержимое между незнакомыми им тегами <script>…</script>.

robinner 15.05.2010 18:20

Цитата:

Сообщение от micscr (Сообщение 55332)
подразумевалось закомментировать код, то надо так:

Нет...Это не подразумевалось...

Я понял, что вот сюда не передается аргумент document.write(calendar());.
Вот так, например, работает document.write(calendar(3, 2010));.
Но, естественно, не переключаются месяцы.

Могу целиком привести код.

robinner 15.05.2010 18:50

javascript файл

var now=new Date;
var sm=now.getMonth();
var sy=now.getFullYear();
var m=now.getMonth();
var y=now.getFullYear();
var month=new Array("Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь");
var day=new Array("Вс","Пн","Вт","Ср","Чт","Пт","Сб");
function calendar(cm,year){
	td=now.getDate();//сегодняшнее число
	s=new Date();
	s.setDate(1);
	s.setFullYear(year);
	s.setMonth(cm);
	sd=s.getDay();//старт
	feb=((year%4)==0)?29:28;//высокосный год
	nDay=new Array('31',feb,'31','30','31','30','31','31','30','31','30','31');
	result='<table id="c" cellpadding="0" cellspacing="0"><tr><td onclick="back()"><img src="img/l.gif"></td><td colspan="5">'+month[cm]+', '+year+'</td><td onclick="forward()"><img src="img/r.gif"></td></tr><tr>';
	for(var i=0;i<7;i++){
		result+='<td>'+day[i]+'</td>';
	}
	result+='</tr></table>'
	return result;
}
calendar(m,y);
function forward(){
	m+=1;
	if(m>=12){
		m=0;
		y++;
	}
	calendar(m,y);
}
function back(){
	m-=1;
	if(m<0){
		m=11;
		y--;
	}
	calendar(m,y);
}


html файл

<html>
<head>
<title>Календарь</title>
<link rel="stylesheet" href="style.CSS" type="text/css" media="screen" />
<script src="calendar.js"></script>
</head>
<body>
<script language="javascript">
<!--
document.write(calendar());
//-->
</script>
</body>
</html>


Часовой пояс GMT +3, время: 13:59.