Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Использование одной переменной в нескольких функциях (https://javascript.ru/forum/misc/18590-ispolzovanie-odnojj-peremennojj-v-neskolkikh-funkciyakh.html)

(Sandr) 07.07.2011 19:15

Использование одной переменной в нескольких функциях
 
Есть одна переменная обозначенная в самом начале файла скрипта
var name = document.getElementById('див');

Дальше идут множество функций использующих эту переменную.
Например так name.style.display = 'none';
В роде бы всё норм, но одна функция при просмотре в консоли ошибок на ФФ выдаёт, что name is null. Но как эта переменная может быть null если она определина в начале программы?

Sweet 07.07.2011 19:22

Если "в начале программы" name действительно была не null, то либо кто-то переопределил ее, либо это уже другая переменная:
var name = "test";
(function(name){
  alert( name );
}(null));

(Sandr) 07.07.2011 19:34

Ды вродь ничего не переопредилял
Вот та функция

function list(sel, id)
{
		$.ajax({
				type: "POST",
				url: "list.php",
				data: {select: 'add', id: id},
				success: function(html)
						{
							$("#res_adm").html(html);
							start();
							name.style.display = 'block';
							setTimeout(function() {name.style.display = 'none'; clean()},2000);
						}
			});
		return false;
}

ваый 07.07.2011 23:01

очень плохая идея называть глобальную переменную именем name.
дело в том, что name - это свойство объекта window, в данном случае, видимо, дело в этом. у меня так однажды было. долго искал косяк.

(Sandr) 07.07.2011 23:49

А если обозначить как error?

melky 08.07.2011 00:16

обозначь как Document, или dOcument

(Sandr) 08.07.2011 22:32

Вот подобный пример, подскажите пожалуйста, где ошибка

<script src="js/jquery.js"></script> 
<script>
var aaaa = document.getElementById('divvv');

function list(sel)
{
	if(sel == 'add')
	{
		alert(aaaa.style.display);
		$.ajax({
				type: "POST",
				url: "/query.php",
				data: {select: 'add', id_comm: id_comm},
				success: function(html)
						{
							$("#divvv").html(html);
							aaaa.style.display = 'block';
							setTimeout(function() {aaaa.style.display = 'none'; },2000);
						}
			});
		return false;
	}
}
</script>
<html>
<head>
<title>Панель управления блогом</title>
</head>
<body>
<div id="divvv" style="display:none">!11!11!</div>	
<a href="javascript:void(0)" onclick="list('add')">Запустить</a>
</body>
</html>

ваый 09.07.2011 00:26

обернуть бы все это в
$(function() {
   ...
})

вроде как var aaaa = document.getElementById('divvv'); не должна быть определена так как DOM не загрузился еще

dmitriymar 09.07.2011 01:33

Цитата:

Сообщение от (Sandr)
Есть одна переменная обозначенная в самом начале файла скрипта
var name = document.getElementById('див');

либо это по onload выполнять.либо после нтмл кода <div id="divvv" style="display:none">!11!11!</div> .иначе как сказано в посте выше -в dom дереве не существует ещё этого элемента

ILL-JAH 09.07.2011 20:56

(Sandr), помести скрипт после body.


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