Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Почему не запускается функция? (https://javascript.ru/forum/jquery/39311-pochemu-ne-zapuskaetsya-funkciya.html)

jeysmook 25.06.2013 08:57

Почему не запускается функция?
 
Функция хранится в отдельном файле, причем если запускать ее из этого же файла все работает, но если запускать через ссылку, то не работает.
$(function() {
	function openWindow(content) {
		getWindow = function(content) {
			var containerWindow = '<div class="container-window"><div class="window">'+
			'<div class="control-panel-window"><a href="" class="close-window">Закрыть</a></div>'+
			'<div class="content-window">'+content+'</div>'+
			'</div></div>';
			return containerWindow;
		}
		alert(getWindow);
		$('body').append(getWindow(content));
	}
	$('.registration').click(function() {
		openWindow('asdasdasd'); // Вот так работает
	});
});

<a href="javascript:openWindow('Регистрация');" class="registration" onclick="openWindow('Регистрация')">Регистрация</a> <!--Вот так не работает -->

skrudjmakdak 25.06.2013 09:06

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

jeysmook 25.06.2013 09:13

skrudjmakdak,
Что самое главное любая другая функция не jQuery, то есть не вида:
$(function() {
function openWindow(content) {
//Не работает
}
});
function a(s) {
alert(s); //Работает
}

mta88 25.06.2013 09:21

<a href="javascript:openWindow('Регистрация');" class="registration" onclick="openWindow('Регистрация')">Регистрация</a> <!--Вот так не работает -->

и не будет работать, потому что openWindow не видно отсюда
пример
function a() {
  function b() {}
  b(); // это можно делать
}

b(); // это нельзя делать, идентификатор 'b' не привязан к функции внутри функции 'a'

skrudjmakdak 25.06.2013 09:21

ммм. у меня работает))

<!DOCTYPE html>
<html>
	<head>
		<script type="text/javascript" src="jquery-1.10.1.min.js"></script>
		<script type="text/javascript">
function two()
	{
	console.log(2);
	}
		
$(document).ready(function(){
function three()
	{
	console.log(3);
	}

$('.one').click(function()
	{
	two();
	three();
	});
});
		</script>

	</head>
	<body>
		<div class="one">123123</div>
	</body>
</html>


вырежете из свое html все не нужное и скиньте сюда, посмотрим..

jeysmook 25.06.2013 09:25

skrudjmakdak,
Ваш метод пишет такую ошибку: enabling javascript debugger to support script, что делать?

skrudjmakdak 25.06.2013 09:26

да да.. mta88 правильно говорит.. я чет не глянул на тег <a> и его внутренности.. он его и не будет видеть.. задайте этому тегу класс и назначьте обработчик по клику.. и главное в конце пишите return false;

рони 25.06.2013 09:26

Цитата:

Сообщение от jeysmook
openWindow('asdasdasd'); // Вот так работает

тут функция видит ссылку
$(function() { тут мы как за каменной стеной никто нас неувидит
Цитата:

Сообщение от jeysmook
Вот так не работает

а со стороны ссылки функции невидно

skrudjmakdak 25.06.2013 09:28

jquery - это функция. а вы описывайте внутри этой свою функцию.. и разумеется из вне ее видно не будет.

вот так делайте:
<!DOCTYPE html>
<html>
	<head>
		<script type="text/javascript" src="jquery-1.10.1.min.js"></script>
		<script type="text/javascript">
$(document).ready(function(){
function three()
	{
	console.log(3);
	}

$('.one').click(function()
	{
	three();
	return false;
	});
});
		</script>

	</head>
	<body>
		<a href="http://google.com" class="one">123123</a>
	</body>
</html>

jeysmook 25.06.2013 09:29

mta88,
Спасибо, я понял теперь все работает. Просто убрал $(function() {//оставил только функцию openWindow()});


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