Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Display:block при условии (https://javascript.ru/forum/misc/78584-display-block-pri-uslovii.html)

samdo 07.10.2019 20:01

Display:block при условии
 
Приветствую!
Есть конструкция:
<button id="btn1" style="display:none">Кнопка 1</button>
<p style="display:none">Какой-то текст</p>


Подскажите как тегу <p> добавить "style='display: block'" если у button "style='display:none'" меняется на "style='display: block'"?

Спасибо!

laimas 07.10.2019 20:05

Цитата:

Сообщение от samdo
если у button "style='display:none'" меняется на "style='display: block'"

А каким образом это можно сделать коли кнопка недоступна или это программное изменение?

samdo 07.10.2019 20:33

Да, там у кнопки программно меняется style display none на display block. И вот когда у кнопки display block, то у <p> тоже должно быть display block.

laimas 07.10.2019 20:43

Цитата:

Сообщение от samdo
там у кнопки программно меняется style display none на display block.

Ну так о чем и речь, вот там "где оно меняется" добавьте установку и для параграфа. Проблема получения его или в чем?

samdo 07.10.2019 20:46

Пробовал, оно работает только для кнопки, для параграфа не срабатывает.

laimas 07.10.2019 20:49

Цитата:

Сообщение от samdo
Пробовал, оно работает только для кнопки

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

samdo 07.10.2019 20:59

Вот так сделано:

<button<?php echo isset($preorder['view']['tooltip']) ? ' data-toggle="tooltip" title="' . $preorder['view']['tooltip']. '"' : ''; ?> id="order"<?php if ($preorder['quantity'] > 0) { ?> style="display: none;"<?php } ?> type="button"<?php if ($preorder['store'] == 2) { ?> onclick="addPreOrder('1', '<?php echo $product_id; ?>');"<?php } ?> class="<?php echo $preorder['class']; ?>">Предзаказ</button>


Я по аналогии добавляю своё:

<p <?php if ($preorder['quantity'] > 0) { ?> style="display: none;"<?php } ?>>Здесь текст</p>


Но display: none; не исчезает при любых манипуляциях с кнопкой.

laimas 07.10.2019 21:03

Это не JS, это РНР код и вам на стороне сервера это надо определить?

samdo 07.10.2019 21:19

Я знаю, что php) Но можно ли присвоить тегу <p> display: block, когда у кнопки тоже display: block посредством js? Либо убрать у <p> display:none, когда у кнопки он тоже отсутствует.

laimas 07.10.2019 21:23

Ничего не понять, коли знаете что РНР и знаете как, то зачем клиент? Что так нельзя?

<button <?
    =isset($preorder['view']['tooltip']) ? 'data-toggle="tooltip" title="' . $preorder['view']['tooltip']. '"' : null
    ?> id="order" style="display:<?
    =$preorder['quantity'] > 0 ? 'none' : 'block'?>" type="button" 
    <?
    =$preorder['store'] == 2) ? 'onclick="addPreOrder(1,'.$product_id.')"' : null?> class="<?
    =$preorder['class']
    ?>"
>Предзаказ</button>

<p style="display:<?=$preorder['quantity'] > 0 ? 'none' : 'block'?>">Здесь текст</p>


Ведь если по условию none это $preorder['quantity'] > 0, то иначе block, а значит тоже самое будет у параграфа. И заключать в кавычки числовые значения необязательно - addPreOrder(1,2), смысла в addPreOrder('1', '2') нет, если только не обусловлено, что аргументы это обязательно строки.

samdo 07.10.2019 21:39

Здесь что-то обрезалось?
<?=$preorder['quantity'] > 0 ? 'none' : 'block'?>

laimas 07.10.2019 21:44

Ничего тут не обрезалось, это тернарный оператор a ? b : c, а <?= короткая запись, тоже самое что и <?php echo, а здесь ?> совсем не нужно закрывать строку кода точкой с запятой, ибо она одна и последняя.

samdo 07.10.2019 21:49

Не сработало( как был display: none, так и остался

laimas 07.10.2019 22:02

Выполните этот код отдельно:
$a = 0;
echo $a ? 'N' : 'Y';
$a = 1;
echo $a ? 'N' : 'Y';

Работает и правильно? Тоже самое и ваше, которое записать можно проще:
style="display:<?=$preorder['quantity'] ? 'none' : 'block'?>"

и если $preorder['quantity'] действительно не ноль, то у элемента будет style="display:none", иначе style="display:block". Последнее же получится если $preorder['quantity'] не существует и возвращает null.

samdo 07.10.2019 22:17

Выполнил код, что выше дали, на странице выводися вот это YN (при любых манипуляциях никак не изменяется).

<?=$preorder['quantity'] ? 'none' : 'block'?> тоже попробовал, по прежнему без результата(

laimas 07.10.2019 22:24

Цитата:

Сообщение от samdo
на странице выводися вот это YN

Все верно при а=0 (false) , будет Y, а при а=1 (true) будет N. И какие манипуляции? При любом значении а больше нуля всегда будет N. Так что проверьте значение $preorder['quantity'], что удивляться то.


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