Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   изменение значения элемента display (https://javascript.ru/forum/misc/14126-izmenenie-znacheniya-ehlementa-display.html)

(Sandr) 30.12.2010 20:41

изменение значения элемента display
 
Помогите пожалуйса.. Нужно, чтобы после клика на ссылку изменялось значение элемента display с block на none и обратно. Ниже код, но он не работает.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js">
</script>
<script>
function my_f(objName)
{
if ($(objName).css('display') == 'none')
{
$(objName).css('display') = 'block';
}
else
{
$(objName).css('display') = 'none';
}
}
</script>

<a href="javascript:void(0)" onclick="my_f('#textid')">(+)</a>
<div id="textid" style="display:block">
скрытый текст
</div>

Подскажите, где ошибка?

Vulkan 30.12.2010 20:48

<script>
function my_f(objName) {
var object = document.getElementById(objName);
object.style.display == 'none' ? object.style.display = 'block' : object.style.display = 'none'
}
</script>

<a href="javascript:void(0)" onclick="my_f('textid')">(+)</a>
<div id="textid" style="display:block;">
скрытый текст
</div>

ksa 30.12.2010 20:55

(Sandr), многа букаф...

<!DOCTYPE html>
<html>
<HEAD>
<TITLE></TITLE>
<style>
</style>
<script>
function my_f(Id) {
    var o=document.getElementById(Id)
    o.style.display = (o.style.display == 'none')? 'block': 'none'
}
</script>
</HEAD>
<body>
<a href="#" onclick="my_f('textid')">(+)</a>
<div id="textid">
скрытый текст
</div>
</body>
</html>

monolithed 30.12.2010 21:03

Цитата:

Сообщение от ksa
(Sandr), многа букаф...

чтож внесу тогда свои 5 копеек)) :D

<script type="text/javascript">
window.onload = function(){
    document.getElementById('a').onclick = function(){
        var div = document.getElementById('div');
        div.style.display = (div.style.display == '') ? 'block' : '';
        return false;
    };
};
</script>

<style type="text/css">
 div {background: red; display: none; width: 100px; height: 50px;}
</style>
<a href="#" id="a">click</a>
<div id="div"></div>

(Sandr) 30.12.2010 21:11

Всем большое спасибо) и с наступающим))

monolithed 30.12.2010 21:37

не заметил, а вам на jQuery код нужен был?

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    $('.a').click(function(){
         $('.div1').toggleClass('div2');
        return false;
    });
});
</script>

<style type="text/css">
div {background: red; width: 100px; height: 50px; }
.div1 {display: none;}
.div2 {display: block;}
</style>

<a href="#" class="a">click</a>
<div class="div1"></div>

(Sandr) 30.12.2010 21:42

Цитата:

Сообщение от monolithed
не заметил, а вам на jQuery код нужен был?

Не обязательно) чем проще тем лучше))

monolithed 30.12.2010 22:17

Цитата:

Сообщение от (Sandr)
Не обязательно) чем проще тем лучше))

это замечательно же))

Aetae 31.12.2010 01:56

Лол, +1)
<!DOCTYPE HTML>
<html>
<head>
	<script type="text/javascript">
	function hide(id) {var o=document.getElementById(id).style; o.display=o.display?'': 'none'}
	</script>
</head>
<body>
	<a href="#" onclick="hide('textid')">(+)</a>
	<div id="textid">
	скрытый текст
	</div>
</body>
</html>

(Sandr) 31.12.2010 14:05

появился ещё один вопрос.. как сделать, чтоб если текст виден, то ссылка с надписью (+) менялась на (-) ?
пробовал ссылке присвоить id="plus_minus" а потом изменить таким образом:
plus_minus.innerHTML = '(-)'
но ничего не получилось..

Vulkan 31.12.2010 14:14

<script>
function my_f(objName, a) {
var object = document.getElementById(objName);
object.style.display = (object.style.display == 'none') ? '' : 'none'
a.innerHTML = (object.style.display == 'none') ? '(+)' : '(-)'
}
</script>

<a href="javascript:void(0)" onclick="my_f('textid', this)">(-)</a>
<div id="textid" style="display:block;">
скрытый текст
</div>

(Sandr) 31.12.2010 14:19

спасибо ещё раз)

talliar 10.03.2012 15:43

Здравствуйте все!

Воспользовался этим кодом:

<script>
function my_f(objName, a) {
var object = document.getElementById(objName);
object.style.display = (object.style.display == 'none') ? '' : 'none'
a.innerHTML = (object.style.display == 'none') ? '(+)' : '(-)'
}
</script>

<a href="javascript:void(0)" onclick="my_f('textid', this)">(-)</a>
<div id="textid" style="display:block;">
скрытый текст
</div>


Все отлично работает, но не подскажите как его модифицировать следующим образом: будет к примеру несколько ссылок и несколько скрытых дивов. По нажатию на одну ссылку див меняет стиль на видимый, а ссылка меняет стиль (цвет допустим). При нажатии на другую ссылку прошлый див сворачивается и открывается тот по которому кликнули (опять жеж со сменой цвета ссылки). Много всего перелопатил, но хочется очень легкого и изящного решения, а все что предлагает слишком громоздко и много лишнего. Я к яваскрипту редко обращаюсь (чуть чуть другая специфика) но вот пришлось) Заранее спасибо за помощь!

(Sandr) 10.03.2012 20:45

talliar,
возможно вам поможет это http://jqueryui.com/demos/accordion/

talliar 13.03.2012 10:41

Спасибо! Как раз то, что нужно!))

hdma 08.02.2017 10:28

Привет. Есть задача воспроизвести поведение опции «Показать полностью…» со страниц ВКонтакта (когда большие комментарии сжимаются). С помощью одного из кодов, представленных выше это удалось — только остаётся перенос строки. Дано ли избавиться от переноса?

<script>
function my_f(objName, a) {
var object = document.getElementById(objName);
object.style.display = (object.style.display == 'block') ? '' : 'block'
a.innerHTML = (object.style.display == 'block') ? '' : '(-)'
}
</script>
</HEAD>
<BODY>
<p>Хозяева жизни ведут борьбу на двух направлениях. Первый фронт — битва за изменение сюжета. Второй фронт — борьба за то, чтобы выбросить из истории (сюжета) как можно большее число людей и народов: если в сюжет входит слишком много «посторонних», лидирующая роль драматурга и режиссера, которую узурпировали элиты, ставится под вопрос. Простой пример. В 1918 году в России белое движение боролось за то, чтобы командарм Сорокин, батька Махно, бывший бандит Котовский <a onclick="my_f('textid', this)">Показать полностью…</a><span id="textid" style="display:none;">остались внеисторическими фигурами вместе со многими миллионами других серых анонимов. Соответственно, красная борьба велась за то, чтобы жизнь людей, чье существование в истории значило не больше, чем жизнь ежа в лесу, превратилась в легендарное и поучительное повествование в учебниках истории для будущих поколений. Тогда победили красные. Сейчас белые изменили сюжет и осуществляют реванш: стирают легендарное повествование, выбрасывая его героев из истории. 
Элиты всеми силами стремятся вернуть себе роль драматурга, узурпировать ее и избавиться от лишних сюжетов.</span></p>


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