РЕДАКТИРОВАТЬ: вам не нужен JavaSript для отображения или скрытия HTML элементов из php. Это просто вопрос добавления (или не добавления) класса к элементу и скрытия или отображения из таблицы стилей.
Ссылка на объяснение tan о том, как использовать тернарный оператор.
Вот как вы это делаете.
<?php
//First we determine the state of the "is_menopausal" condition and, as you'll use it in many places,
//save the state in a variable
$is_menopausal = ( isset( $questionnaire['is_menopausal'] ) && $questionnaire['is_menopausal'] == 1 );
?>
<div id="menopausal" class="row">
<div class="col-xs-4 col-sm-4 ">
<label id="mps" for="mps">Are you menopausal?</label><br/>
<label class="radio-wrap">
<input id="mpsY" for="mpsY" type="radio" name="is_menopausal" value="1"
<?php echo $is_menopausal ? " checked " : "" ?> />
<span>Yes</span>
</label>
<label class="radio-wrap">
<input id="mpsN" for="mpsX" type="radio" value="0" name="is_menopausal"
<?php echo $is_menopausal ? "" : " checked " ?> />
<span>No</span>
</label>
</div>
<div class="col-xs-4 col-sm-3 reveal-when-active <?php echo $is_menopausal ? "active" : "" ?>">
<label>Age of onset:</label>
<input type="text" name="age_of_mp_onset" style="width: 50%;"
value="<?php echo isset( $questionnaire['age_of_mp_onset'] ) ? $questionnaire['age_of_mp_onset'] : "" ?>"
class="form-control"/>
</div>
<div class="col-xs-4 col-sm-3 reveal-when-active <?php echo $is_menopausal ? "active" : "" ?>">
<label>Date of last period:</label>
<input type="text" name="date_of_last_period" style="width: 50%;"
value="<?php echo isset( $questionnaire['date_of_last_period'] ) ? $questionnaire['date_of_last_period'] : "" ?>"
class="form-control"/>
</div>
</div>
<!-- This should be in a separate css style sheet -->
<style type="text/css">
.reveal-when-active{
display: none;
}
.reveal-when-active.active {
display: block;
}
</style>
PHP печатает класс только в некоторых элементах HTML, если условия $is_menopausal
истинны и из таблицы стилей мы определяем, должен ли этот класс отображаться или нет.
Но если вы настаиваете на использовании JavaScript, вы можете сделать это так.
<?php
//First you determine the state of the "is_menopausal" condition and, as you'll use it in many places,
//save the state in a variable
$is_menopausal = ( isset( $questionnaire['is_menopausal'] ) && $questionnaire['is_menopausal'] == 1 );
?>
<div id="menopausal" class="row">
<div class="col-xs-4 col-sm-4 ">
<label id="mps" for="mps">Are you menopausal?</label><br/>
<label class="radio-wrap">
<input id="mpsY" for="mpsY" type="radio" name="is_menopausal" value="1"
<?php echo $is_menopausal ? " checked " : "" ?> />
<span>Yes</span>
</label>
<label class="radio-wrap">
<input id="mpsN" for="mpsX" type="radio" value="0" name="is_menopausal"
<?php echo $is_menopausal ? "" : " checked " ?> />
<span>No</span>
</label>
</div>
<div class="col-xs-4 col-sm-3 reveal-when-active <?php echo $is_menopausal ? "active" : "" ?>">
<label>Age of onset:</label>
<input type="text" name="age_of_mp_onset" style="width: 50%;"
value="<?php echo isset( $questionnaire['age_of_mp_onset'] ) ? $questionnaire['age_of_mp_onset'] : "" ?>"
class="form-control"/>
</div>
<div class="col-xs-4 col-sm-3 reveal-when-active <?php echo $is_menopausal ? "active" : "" ?>">
<label>Date of last period:</label>
<input type="text" name="date_of_last_period" style="width: 50%;"
value="<?php echo isset( $questionnaire['date_of_last_period'] ) ? $questionnaire['date_of_last_period'] : "" ?>"
class="form-control"/>
</div>
</div>
<!-- This should be in a separate css file-->
<style type="text/css" >
.reveal-when-active{
display: none;
}
</style>
<!-- This could be in a separate js file-->
<script type="text/javascript">
(function(){
let elements = document.getElementsByClassName('reveal-when-active active');
for(let element of elements) {
element.style.display = "block";
}
})();
</script>
Javascript показывает элементы ( в данном случае по умолчанию скрыты), которые относятся к классам reveal-when-active
и active
.
Вы должны быть осторожны с отступами и правильным открытием-закрытием тегов HTML. Также вам не нужно использовать полную условную структуру, если вы можете использовать тернарный оператор внутри тега input
.
Я бы сделал это так. Вы увидите, что код намного понятнее.
<?php
$is_menopausal = (isset($questionnaire['is_menopausal']) && $questionnaire['is_menopausal'] == "1");
?>
<label class="radio-wrap" for="mpsY">
<input id="mpsY"
type="radio" value="1" name="is_menopausal" <?php echo $is_menopausal ? "checked" : "" ?> >
<?php if ($is_menopausal): ?>
<script>
document.getElementById("menopausal").style.opacity = 1.0;
</script>
<?php endif; ?>
<span>Yes</span>
</label>