Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Изменение скрипта... (https://javascript.ru/forum/misc/3038-izmenenie-skripta.html)

Cylos 13.03.2009 16:04

Не бюро так не бюро. Значит найду не бюро, но все же место где мне помогут.

Cylos 14.03.2009 02:02

Народ что-то везде пассивный какой-то, решил попробовать написать сам.
Вот что вышло. Только скрипт вобще перестал работать, не показывает не скрывает!

<script type="text/javascript">
	
	function showHideAnswer()
	{
		var numericID = this.id.replace(/[^\d]/g,'');
		var obj = document.getElementById('a' + numericID);
		if(obj.style.display=='block'){
			
			obj.style.display='none';
		}else{

			per.style.display='none'
			obj.style.display='block';
			var per = document.getElementById('a' + numericID);

		}		
	}
	
	
	function initShowHideContent()
	{
		var divs = document.getElementsByTagName('DIV');
		for(var no=0;no<divs.length;no++){
			if(divs[no].className=='question'){
				divs[no].onclick = showHideAnswer;
			}	
			
		}	
	}
	
	window.onload = initShowHideContent;
</script>

Gvozd 14.03.2009 03:16

ну, наконец-то я дождался от тебя еще олной попытки сделать самому.:)
Молодец!
теперь, показываю как это надо чтобы заработало:
Код:


function showHideAnswer()
{
var numericID = this.id.replace(/[^\d]/g,'');
var obj = document.getElementById('a' + numericID);
if(obj.style.display=='block'){

obj.style.display='none';
}else{

if(window.per!=undefined)
per.style.display='none'

obj.style.display='block';
per = document.getElementById('a' + numericID);
}
}

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

Cylos 14.03.2009 10:09

Я так понял скрипт не работал, из-за "пустого" per.style.display ?

Gvozd 14.03.2009 10:19

1)несуществующий per.style.display, и непроверенный
2)неправильное назначение области видимости.если использовать var, то переменная принадлежит только локальной области видимости, и после завершения функции ее значение в данном случае теряется. без var переменная назначается глобальной области видимости

Cylos 14.03.2009 12:34

Понятно. Спасибо за помощь!

Gvozd 14.03.2009 12:36

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


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