Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Не запускается пользовательская функция в теге select (https://javascript.ru/forum/dom-window/39126-ne-zapuskaetsya-polzovatelskaya-funkciya-v-tege-select.html)

Incondition 17.06.2013 10:45

Не запускается пользовательская функция в теге select
 
Объявляю функцию:

<script type='text/javascript'>
function showDay(){
alert('dkfjghdfkjg');
}
</script>

затем я по-разному уже пробовал:

<select class="month" id="month" onFocus="alert('showDay');" onChange="alert('Item with index ' + this.selectedIndex + ' selected.'); alert('utyu');">
<option>Январь</option>
<option selected onClick="alert('showDay');">Февраль</option>
<option>Март</option>
<option>Апрель</option>
</select>

Так работают все алерты.
вот так уже не работает (просто вызов функции не происходит):

1) onChange="showDay();"
2) onChange="alert(showDay());"
3) onChange="alert(showDay);"
4) onFocus="showDay();"
5) onFocus="alert(showDay());"
6) onFocus="alert(showDay);"
7) onClick="showDay();"
8) onClick="alert(showDay());"
9) onClick="alert(showDay);"

Естественно мне нужно запустить именно showDay() но все эти варианты показывают что не запускается все что связано с пользовательской функцией.

Я в javascript новичек, можно сделать через php но всетки так было бы красивее и круче...

Solonik 17.06.2013 11:02

<html>

<head>
<script type='text/javascript'>
function showDay(){
alert('dkfjghdfkjg');
}
</script>
</head>
<body>
<select class="month" id="month" " onChange="showDay()">
<option>Январь</option>
<option>Февраль</option>
<option>Март</option>
<option>Апрель</option>
</select></body>

</html>


Я так понимаю чтобы при изменения option вызывалась функция ? Тогда проще так сделать.

рони 17.06.2013 11:05

Incondition,
:blink:
<!DOCTYPE HTML>
<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <script type='text/javascript'>
 function showDay(){
 alert('dkfjghdfkjg');
 }
 </script>
</head>

<body>
<select class="month" id="month"  onChange="alert(showDay());showDay();alert('Item with index ' + this.selectedIndex + ' selected.'); alert('utyu');">
 <option>Январь</option>
 <option selected >Февраль</option>
 <option>Март</option>
 <option>Апрель</option>
 </select>
</body>
</html>

Incondition 17.06.2013 13:18

Хух(( простите, ваш код работает, мой нет... вот мой код:

<!DOCTYPE HTML>
<html>
<head>
 <title>Untitled</title>
<meta charset="utf-8">
 <script type='text/javascript'>
function showDay(){
 alert('dkfjghdfkjg');
 if (!year%4 && month=='Февраль') {
			document.getElementById("day1")[28].innerHTML = "29";
			document.getElementById("day1")[29].innerHTML = "";
			document.getElementById("day1")[30].innerHTML = "";
		} else if (month=='Февраль'){
			document.getElementById("day1")[28].innerHTML = "";
			document.getElementById("day1")[29].innerHTML = "";
			document.getElementById("day1")[30].innerHTML = "";
		}
		else {
			switch (month){
			case: 'Январь'
			case: 'Март'
			case: 'Май'
			case: 'Июль'
			case: 'Август'
			case: 'Октябрь'
			case: 'Декабрь'
				document.getElementById("day")[29].innerHTML = "30";
				document.getElementById("day")[30].innerHTML = "31";
				break;
			default:
				document.getElementById("day")[29].innerHTML = "30";
				document.getElementById("day")[30].innerHTML = "";
		}
 }
 
	 </script>
</head>
	 
<body>
<form>
	<select class="year" id="year"> 
	<?php 
	for($i=2012; $i>=1900; $i--)
	{
		 echo ("<option>".$i."</option>"); 
	}
	?>
	</select>
	<select class="month" id="month" onChange="showDay();">
	<option>Январь</option>
	<option selected>Февраль</option>
	<option>Март</option>
	<option>Апрель</option>
	<option>Май</option>
	<option>Июнь</option>
	<option>Июль</option>
	<option>Август</option>
	<option>Сентябрь</option>
	<option>Октябрь</option>
	<option>Ноябрь</option>
	<option >Декабрь</option>
	</select>
	<select class="day" id="day">
	 
	<?php 
	for($i=1; $i<=28; $i++)
	{
		 echo ("<option>".$i."</option>"); 
	}
	?>
	</select> 
	 </form>
</body>
</html>


Понимаю, тут много недочетов но помогите сделать чтобы хоть запускалась...

рони 17.06.2013 13:29

Цитата:

Сообщение от Incondition
if (!year%4 && month=='Февраль') {

интересно откуда в эту строку прилетят год и месяц

рони 17.06.2013 13:41

Incondition,
для кругозора 18.05.2006 Javascript SELECT - динамические списки

http://learn.javascript.ru/form-elements#select-option

danik.js 17.06.2013 14:06

Цитата:

Сообщение от Incondition
case: 'Январь'

Че за конструкция? Имелось ввиду case 'Январь': ? Также сосчитай количество открывающих фигурных скобок и количество закрывающих.

Incondition 17.06.2013 14:22

как я могу проверить код если функцию запустить не могу. Запущу и по исправляю. Спасибо всем за замечания по коду функции но удосуждесь объяснить кто понимает: почему не запускается функция? не трогайте код, там я разберусь, помогите функцию запустить.

рони 17.06.2013 14:40

Incondition,
month это у вас селект -- элемент он никогда не будет равен февралю в нормальном случае. но у селекта что-то есть что может быть февралём.

Incondition 17.06.2013 15:36

хорошо, я понял, но я не могу понять почему не запускается функция showDay(), она ведь должна запускаться при смене месяца, этого не происходит

рони 17.06.2013 15:42

Цитата:

Сообщение от Incondition
но я не могу понять почему не запускается функция showDay()

вам написали ---
Цитата:

Сообщение от danik.js
Че за конструкция? Имелось ввиду case 'Январь': ? Также сосчитай количество открывающих фигурных скобок и количество закрывающих.

попробую перевести -- добавьте фигурную скобку в конце и исправьте Конструкцию switch и будет вам промежуточное счастье.

Incondition 17.06.2013 19:21

Цитата:

Сообщение от рони (Сообщение 256815)
вам написали ---
попробую перевести -- добавьте фигурную скобку в конце и исправьте Конструкцию switch и будет вам промежуточное счастье.

Какая досада, 10 раз скобки пересчитал, оказывается скобку я потерял при копировании кусков кода из оригинального файла а там все в порядке со скобками... Вот только промежуточное счастье не наступило, функция не запускается... вернее запускается если большую часть кода закоментировать. вот функция из оригинального файла с закоментированой частью, скобки можете тоже пересчитать, может у меня сегодня день несчетный:

<script type='text/javascript'>
  	function showDay()
	{
		alert('test');
		var year=document.getElementById("year").innerHTML;
		var month=document.getElementById("month").innerHTML;
		alert('year');
		/*if (!year%4 && month=='Февраль')
		{
			document.getElementById("day1")[28].innerHTML = "29";
			document.getElementById("day1")[29].innerHTML = "";
			document.getElementById("day1")[30].innerHTML = "";
		} else if (month=='Февраль')
		{
			document.getElementById("day1")[28].innerHTML = "";
			document.getElementById("day1")[29].innerHTML = "";
			document.getElementById("day1")[30].innerHTML = "";
		}
		else 
		{
			switch (month)
			{
			case: 'Январь'
			case: 'Март'
			case: 'Май'
			case: 'Июль'
			case: 'Август'
			case: 'Октябрь'
			case: 'Декабрь'
				document.getElementById("day")[29].innerHTML = "30";
				document.getElementById("day")[30].innerHTML = "31";
				break;
			default:
				document.getElementById("day")[29].innerHTML = "30";
				document.getElementById("day")[30].innerHTML = "";
			}
		}*/
	}
  </script>


Скоро веру в жизнь потеряю((

рони 17.06.2013 19:49

Incondition,
в switch двоеточия править нужно - перенесите их за месяцы -- ферштейн? :victory:

Incondition 17.06.2013 21:04

Наконец то)))) теперь признаюсь что я тормоз((( обычно я свои ошибки нахожу сам))) тем более ошибка то такая позорная)) и я даже не обратил внимания, что мне об этом уже писали((( извините, сбило с толку, что вся функция не запускалась...

заработало)) даже функция выполняет свое предназначение, правда немного коряво но теперь, думаю, разберусь))) там надо по другому реализовать)

Спасибо!!!:victory:

danik.js 17.06.2013 23:32

Цитата:

Сообщение от Incondition
как я могу проверить код если функцию запустить не могу. Запущу и по исправляю. Спасибо всем за замечания по коду функции но удосуждесь объяснить кто понимает: почему не запускается функция? не трогайте код, там я разберусь, помогите функцию запустить.

Может ты и сам уже догадался, но когда в коде имеются синтаксические ошибки, то он не выполняется вовсе. А значит, никакой функции showDay не существует и вызвать ее невозможно.
И вобще, если что-то не работает - открой консоль ошибок в браузере (она имеется во всех браузерах).

Kvark 18.06.2013 12:43

Что бы не считать скобки кстати очень удобная штука нотепад++

Incondition 18.06.2013 12:49

Цитата:

Сообщение от Kvark (Сообщение 256970)
Что бы не считать скобки кстати очень удобная штука нотепад++

я в дримвьювере пишу. Удобно, но скобки попарно, конечно, не ставит... но со скобками не так страшно)) легко заметить))) чтоб проблемы такой не было надо открывающую и закрывающую ставить сразу)))) У меня проблема возникла при копировании части кода))

Incondition 18.06.2013 12:52

Цитата:

Сообщение от danik.js (Сообщение 256882)
Может ты и сам уже догадался, но когда в коде имеются синтаксические ошибки, то он не выполняется вовсе. А значит, никакой функции showDay не существует и вызвать ее невозможно.
И вобще, если что-то не работает - открой консоль ошибок в браузере (она имеется во всех браузерах).

Теперь заметил. Я раньше javascript не использовал а в php, например, функция вызовется и отработает как сможет... По крайней мере таких проблем я не встречал раньше, это и сбило с толку, ошибку не там искал совсем))

danik.js 18.06.2013 16:15

Цитата:

Сообщение от Incondition
в php, например, функция вызовется и отработает как сможет

Неправда. Ошибка в синтаксисе приведет к Fatal Error. Ошибки в синтаксисе выявляются на первом этапе интерпретации кода, и приводят к остановке разбора. До непосредственно исполнения кода дело даже не доходит..

Incondition 26.06.2013 10:26

Цитата:

Сообщение от danik.js (Сообщение 257033)
Неправда. Ошибка в синтаксисе приведет к Fatal Error. Ошибки в синтаксисе выявляются на первом этапе интерпретации кода, и приводят к остановке разбора. До непосредственно исполнения кода дело даже не доходит..


Ну да))) и сразу понятно что и как))) я имел в виду ошибки, которые пропустит интерпретатор (логические получается). В любом случае там я с таким случаем не сталкивался чтоб скрипт работал кроме функции в которой ошибка)) Не привычно) Но я уже освоился, сам пока нахожу что не так)))


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