показать скрытый раздел div на основе оператора if - PullRequest
2 голосов
/ 30 августа 2011

У меня есть несколько скрытых элементов div на этой странице

<div class="form" id="scheduler" style="display: none;">

<div class="form" id="test" style="display: none;">

<div class="form" id="super" style="display: none;">

Мне нужен jscript, который можно вызвать для отображения этих скрытых элементов div на основе таких критериев, как этот

<?php 
if ($_GET['id'] == 'scheduler') {
   call jscript function (show div id:scheduler in this case)
}
else if ($_GET['id'] == 'test') {
   call jscript function (show div id:test in this case)
}
else if ($_GET['id'] == 'super') {
   call jscript function (show div id:super in this case)
}
?>

спасибо.

Ответы [ 5 ]

1 голос
/ 30 августа 2011

Вы не можете вызывать функцию javascript из PHP, PHP основан на стороне сервера и означает предварительную обработку гипертекста, а Javascript - на основе браузера.

Вы можете использовать:

<?php 
    if ($_GET['id'] == 'scheduler') {
       $showdiv = 'scheduler';
    }
    else if ($_GET['id'] == 'test') {
       $showdiv = 'test';
    }
    else if ($_GET['id'] == 'super') {
       $showdiv = 'super';
    }
    echo "<script type=\"text/javascript\">document.getElementById('".$showdiv."').style.display = 'block';</script>";
?>

но это должно быть в нижней части страницы, после загрузки этих div.

0 голосов
/ 30 августа 2011

Даже если вы приняли ответ, другим вариантом будет использование только JavaScript с помощью некоторого JS для простого извлечения значений из строки запроса.

function $get(variable) {
  var query = window.location.search.substring(1);
  var vars = query.split('&');
  for (var i = 0; i < vars.length; i++) {
    var pair = vars[i].split('=');
    if (pair[0] == variable) {
      return pair[1];
    }
  }
}

var qs_id = $get('id');

if (['scheduler', 'test', 'super'].indexOf(qs_id) >= 0) {
  document.getElementById(qs_id).style.display = 'block';
}

Демонстрация: jsfiddle.net / Marcel / L69xt / шоу

0 голосов
/ 30 августа 2011

Прежде всего. Я бы использовал jquery, чтобы показать / скрыть divs ...

но моя концепция была бы немного иной, чем выше,

<?php
  if($_GET['id']){
    echo '<script type="text/javascript">$(\'#'.$_GET['id'].'\').show();</script>';
  }
?>

Надеюсь, что вы поняли мою идею, она чиста и довольно динамична:)

0 голосов
/ 30 августа 2011

Почему бы вам не написать свою функцию для принятия параметра id строки запроса? <script>thefunction($get);</script>

Таким образом, вы можете сэкономить на if логике и разработать более абстрактную функцию. Это меньше кода и проще в управлении.

0 голосов
/ 30 августа 2011
<script type='text/javascript'>
function showDivById(id){
    document.getElementById(id).visible = true;
}

<?php 
    $divs = array('scheduler','test','super');
    if (array_seach($_GET['id'], $divs)!==false)
        echo "showDivById({$_GET['id']})";
?>
</script>

Обратите внимание, что код php в <script>

...