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

Cylos 12.03.2009 17:05

Изменение скрипта...
 
Всем привет. Есть такой скрипт, задача которого открывать и скрывать текст при нажатии на ссыль!
Работает скрипт нормуль, но хотелось бы кое что к нему добавить. А именно сделать так, чтобы при нажатии на одну из ссылок, сначало скрылся открытый текст (который я открыл до этого), а уже потом открылся новый.

Вот сам скрипт:
Работает так: http://www.dhtmlgoodies.com/scripts/...e-content.html

Код:

<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{
                        obj.style.display='block';
                }               
        }
       
       
        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>



подключаемый CSS....
Код:

        .question{
                cursor:pointer;}
               
        .answer{               
                FONT-FAMILY: Verdana;
                color: #8c9599;
                border: 1px solid #282f37;
                padding:3px;
                width:550px;
                background-color:#1a1e23;
                display:none;        }

Код в теле:
Код:



<div id="q1" class="question">1</div>
<div id="a1" class="answer">Увидишь текст когда нажмёшь на "1".
</div>


Gvozd 12.03.2009 17:36

например мжно так:добавьте глобальную переменную, которая бы указывала текущий открытый элемент.
при срабатывании showHideAnswer() сначало пусть скроется тот элемент, на который ссылается, а затем все остальное пусть происходит.
PS кажется такая тема уже мелькала давно на форуме

Cylos 12.03.2009 19:54

Хотелось бы, что бы вы сами исправили скрипт. Мои знания c++ пока не позволяют его исправить =)

Gvozd 12.03.2009 20:10

Цитата:

Сообщение от Cylos
Мои знания c++ пока не позволяют его исправить

а при чем тут ваши знания C++?
скрипт на JS, и обратились вы на форум не по C++, а по JS.

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

исправлять надо совсем мало.но мне не нравится ваша постановка вопроса.тут на оруме помагают написать, дав совет, список литературы, и задав направление.
полностью пишут программы в разделе "Работа".
короче, я не вижу вашей попытки решить проблему самостоятельно.
и писать код ЗА ВАС не собираюсь.
для человека знающего JS хотя бы день не возникнет проблемы реализовать мой совет в действии.
идите курите мануалы.
согласен вам написать код, при условии, что вы напишите как бы вы реализовали мой совет если бы писали на C++, хотя бы примерно, в общих чертах.чтобы я увидел, что вы хоть что-то самостоятельно пытаетесь делать.
либо можете дождатся пока более добрые софорумчане напишут вам готовый код.

Cylos 12.03.2009 23:07

С++ при том, что код мне понятен (не сильно от си отличается).

Скрипт скачал отсюда - http://www.dhtmlgoodies.com/index.ht...w_hide_content
Проблема исправить - я не знаю яву вообще. Я провозился с ним 2 дня и у меня не вышло.

То, что исправить мало - знаю. Буквально 2 строчки, но ещё раз повторюсь. Я не программирую на яве.

Не собираетесь писать - спасибо за внимание. Подожду помощи другого!

Zibba 13.03.2009 02:01

Цитата:

Сообщение от Cylos
С++ при том, что код мне понятен (не сильно от си отличается).

Цитата:

Сообщение от Cylos
Я провозился с ним 2 дня и у меня не вышло.

Однако Вы сами себе противоречите в высказываниях, то Вам все понятно, то нет. Определитесь наверное для начала что Вам нужно и что Вы понимаете, а что нет.

P.S. По делу, почитайте статьи по управлению стилями в js, этого Вам как человеку знакомому с Си думаю будет достаточно (простую логику и самому можно выстрадать, к тому же учитывая то, что Вам помогли советом).

Cylos 13.03.2009 13:16

Мне понятен принцип работы скрипта, но не понятные некоторые моменты.
Что мне нужно я уже давно определился.

Можно ли эту тему переместить в раздел "Работа"?

Treekci 13.03.2009 13:22

А не проще ли будет малёхо поизвращяться с CSS? Или это малёхо не по теме форума? =)

Gvozd 13.03.2009 13:32

5 WMZ
ICQ в моем профайле, если устраивает

Treekci,
а как вы подразумеваете извращатся с CSS-ом, минуя JS?
рсскажите, сэкономьте ТС-у 5 баксов

Treekci 13.03.2009 13:40

Не, я имею ввиду, что часто всё советуют чисто на яве, а я бы еще и CSS приплёл 0 :-)
Ну, вопрос-то изначальный, если я понял, базируется на том, что один текст заменяется другим. Я бы написал кучку DIVов, один на другой. При onclick один прячется, другой появляется...

Gvozd 13.03.2009 13:44

Treekci,
пощелкайте по крассным ссылкам в странице указаной ТС-ом.
на каждую из них открывается-скрывыается свой блок.
ТС-у же надо, чтобы при открытии блока, скрывался другой

Treekci 13.03.2009 13:48

А, спасибо =)
Так так же просто =) При нажатии скрываем все блоки, и потом открываем нужный %)

Gvozd 13.03.2009 13:56

Treekci,
просто.именно.

Treekci 13.03.2009 13:59

Так вот, с чего и начали :D
Пару раз на форуме видел, что советуют длинные Java-скрипты, а в то же время можно было бы использовать пару вещей из CSS, и получилось бы короче... Я предполагаю, что я могу быть кривым =)

Cylos 13.03.2009 14:55

Gvozd за 2 строчки 5вмз хочешь. Жадный ты человек. =) Успехов!!!

Gvozd 13.03.2009 15:06

для меня это пара строчек, и пять минут сидение в текстовом редакторе.

а вот ты потратил два дня на попытку сделать(честно не понимаю как на это можно было потратить дуже не зная языка двое суток.с учетом что у вас етсь интернет)
и еще два потратите в таком ключе.
неужели два дня вашего потраченного времени не стоят 5WMZ?
вам конечно видней, но полагаю что они стоят гораздо большего.
лично я готов заплатить, если я четко осознаю, что потрачу больше времени впустую, чем смогу заработать за это время чем-то что у меня лучше получается.если конечно, мне нужен результат, а не знания.знания они бесценны, и в таком случае я предпочитаю тратить свое время(а при необходимости и деньги).

назови цену своих двух своих рабочих дней проведенных с толком, и я сделаю тебе скрипт за эту цену.
если они стоят 0WMZ, я сделаю за бесплатно.

Kolyaj 13.03.2009 15:31

Цитата:

Сообщение от Cylos
Gvozd за 2 строчки 5вмз хочешь. Жадный ты человек.

Когда вы платите программисту, вы платите ему не за время, потраченное на ваш скрипт, а за время потраченное на изучение всего того, что нужно для написания вашего скрипта. Чем более опытен программист, тем более дорогие скрипты он пишет, но при этом быстрее.

З.Ы. Это не применительно к данному скрипту.

Cylos 13.03.2009 15:33

2 дня, вовсе не значит, что я просидел 48 часов за скриптом. Это было 30 минут "вчера и сегодня". На форум я пришёл с мыслью, что 2 строчки люди напишут за 5 минут безвозмездно, но видимо я заблуждался.

5вмз я бы врядли даже за весь скрипт заплатил, а цену за 2 строчки я даже и обсуждать не хочу. Неужели для вас даже 2 страницы постов, проще чем 2 строчки кода? (не надо ссылаться на подсказки, я не программирую на JS, по крайней мере пока). Я же не что-то огромное попросил.

Gvozd 13.03.2009 15:38

Kolyaj,
именно так.
Cylos,
если вы считаете, что я сижу тут только для того чтобы ограбить вас на 5WMZ(смешные по сути деньги которых мне хватит один раз попить пива культурно), то вы ошибаетесь.
я здесь прежде всего помагаю людям решить относительно интересные вопросы.под решать прежде всего подразумевается описание алгоритма,и снабжение всем необходимым материалом по теме.
а не для того чтобы писать им код, который я был способен писал после первых двух дней сумбурного изучения JS-а, никого не спрашивая

Gvozd 13.03.2009 15:42

Цитата:

Сообщение от Cylos
я не программирую на JS, по крайней мере пока

тут не бюро добрых услуг, чтобы писать такую фигню.учите JS.
если помогать всем, кому надо написать две строчки, то это будет слишком

что же до количества постов, то можете считать, что я троль, а вы моя "еда".правда я не троль, ибо троль никогда в этом не признается

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:47.