php - 如何重叠 document.getElementById ('' ).style.visibility = "hidden"中的 html 元素;

标签 php javascript html

我的问题可能有点令人困惑,但我会尽力解释它。首先,我想告诉您,我是编程的初学者,所以我的问题可能听起来很愚蠢。请耐心等待...

我已经成功地使用 JavaScript 隐藏和显示 html 元素,但是,我注意到可见元素没有占据隐藏元素的位置。不知怎的,我明白该元素是存在的,但不仅仅是可见的。我怎样才能使可见元素重叠或占据隐藏元素的位置。

这 2 个元素是:

  • div id="show_description"
  • 输入类型=“提交”id=“send_notice”


代码如下:

index.php

<?php include('functions.php'); ?>

<?php session_start(); ?>

<?php 
 $yr = isset($_GET['year_list']) ? $_GET['year_list'] : null;
 $evnt = isset($_GET['event_list']) ? $_GET['event_list'] : null; 
?>

<html>
<head>
 <script type="text/javascript" src="myscripts.js"></script>
 <style type='text/css'>
  #show_description {
   min-height: 100px;
   min-width: 500px;
   max-height: 100px;
   max-width: 500px;
   background-color: #000;
   color: #fff;
   padding: 10px;
  }
 </style>
</head>

<body onload="check_year_event();">
<div>
 <form name="myform" action="index.php" method="get" >

  Select Year: <?php echo hspacer(1); ?>
  <select id="year_list" name="year_list" onchange="check_year_event();" >
  <?php  
   for($year = (date('Y') - 100); $year <= (date('Y') + 100); $year++ ) {
    if ($year == date('Y'))  echo "<option value='$year' name='$year' selected='' >" . $year . "</option>";
    else echo "<option value='$year' name='$year' >" . $year . "</option>";
   }
  ?>
  </select>
  <?php echo hspacer(5); ?>
  Select Event:  <?php echo hspacer(1); ?>
  <select id="event_list" name="event_list" onchange="check_year_event();" >
  <?php  
   $events = array("Karate Tournament", "Beauty Pageant", "Film Festival", "Singing Contest", "Wedding");

   foreach($events as $event) echo "<option value='$event' name='$event' >" . $event . "</option>";
  ?>
  </select>
  <?php echo vspacer(2); echo hspacer(22); ?>
  <input type="submit" id="send_notice" value="Send Notice" /> 
 </form>
</div>


 <div id="show_description" >

 </div>

</body>
</html>


functions.php

<?php
 function hspacer($num_of_spaces) {
  $spaces = "";
  if ($num_of_spaces > 0)  for($i=0; $i<$num_of_spaces; $i++ )  $spaces .= "&nbsp;";

  return $spaces;
 } 

 function vspacer($num_of_linefeeds) {
  $linefeeds = "";
  if ($num_of_linefeeds > 0)  for($i=0; $i<$num_of_linefeeds; $i++ )  $linefeeds .= "<br />";

  return $linefeeds;
 }
?>


myscripts.js

function create2DArray(row, col){
 var array2D = new Array(row);

 for (var i = 0; i < row; i++) {
  array2D[i] = new Array(col);
 }

 return array2D;
}

function check_year_event() {
 var years_and_events = create2DArray(10, 3);

 years_and_events[0][0] = 2001; 
 years_and_events[0][1] = "Karate Tournament"; 
 years_and_events[0][2] = "Annual karate tournament held globally"; 
 years_and_events[1][0] = 2002; 
 years_and_events[1][1] = "Beauty Pageant"; 
 years_and_events[1][2] = "Beauty pageant held globally"; 
 years_and_events[2][0] = 2003; 
 years_and_events[2][1] = "Film Festival"; 
 years_and_events[2][2] = "Film festival held globally"; 
 years_and_events[3][0] = 2004; 
 years_and_events[3][1] = "Singing Contest"; 
 years_and_events[3][2] = "Singing contest tournament held globally"; 
 years_and_events[4][0] = 2005; 
 years_and_events[4][1] = "Wedding"; 
 years_and_events[4][2] = "Wedding tournament held globally"; 
 years_and_events[5][0] = 2007; 
 years_and_events[5][1] = "Karate Tournament"; 
 years_and_events[5][2] = "Annual karate tournament held globally"; 
 years_and_events[6][0] = 2008; 
 years_and_events[6][1] = "Beaty Pageant"; 
 years_and_events[6][2] = "Beauty pageant held globally"; 
 years_and_events[7][0] = 2009; 
 years_and_events[7][1] = "Film Festival"; 
 years_and_events[7][2] = "Film festival held globally"; 
 years_and_events[8][0] = 2010; 
 years_and_events[8][1] = "Singing Contest"; 
 years_and_events[8][2] = "Singing contest tournament held globally"; 
 years_and_events[9][0] = 2011; 
 years_and_events[9][1] = "Wedding"; 
 years_and_events[9][2] = "Wedding tournament held globally"; 


 var year = document.getElementById('year_list').value;
 var event = document.getElementById('event_list').value;
 var found = false;



 for (var i = 0; i < years_and_events.length; i++) {
  if ((year == years_and_events[i][0]) && (event == years_and_events[i][1])) {
   document.getElementById('show_description').innerHTML = years_and_events[i][2];
   document.getElementById('send_notice').style.visibility = "hidden";
   document.getElementById('show_description').style.visibility = "visible";
   found = true;
   break;
  }
 }

 if (found == false) {
  document.getElementById('show_description').style.visibility = "hidden";
  document.getElementById('send_notice').style.visibility = "visible";
 } 
}

最佳答案

使用 display: none 来隐藏您的对象。 Visibility:hidden 仍然占据元素的空间。

关于php - 如何重叠 document.getElementById ('' ).style.visibility = "hidden"中的 html 元素;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6012804/

相关文章:

javascript - jQuery Ajax 未发布到 PHP 文件

java - 基于多个正则表达式规则插入字符串的算法

php - 我正在尝试使用 php 代码删除使用复选框选择的行

php - PHP 中类型安全的通用装饰器

javascript - 在 HTML 表单提交上从 MySQL DB 创建唯一的 URL/页面

javascript - 客户端和服务器端编程有什么区别?

javascript - 在 Chrome 中从动态表单发布到动态 iframe 会打开一个新窗口

javascript - 是否可以用另一种颜色覆盖背景图像?

javascript - 为什么我的输入字段需要显示错误作为初始状态?

css - 我怎样才能使一个 div 承担其包含的 div 的 100%?