Как показать и скрыть элемент, передать значения из JavaScript в элемент HTML, используя JavaScript (не JQuery)? - PullRequest
1 голос
/ 13 мая 2011

Я новичок в программировании, поэтому этот мой вопрос может показаться неуместным. Я хочу знать, как скрыть и показать элемент HTML, используя оригинальный JavaScript, а не jQuery. Так как я начинающий, я думаю, что должен изучить примитивный JavaScript, прежде чем переходить к некоторым библиотекам, таким как jQuery.

Прежде всего я вставлю коды ...

index.php

<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;
 }
</style>

</head>
<body>
<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="add_description" value="Add Description" onclick="show(); "/> 
 </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;


 for (var i = 0; i < years_and_events.length; i++) {
  if ((year == years_and_events[i][0]) && (event == years_and_events[i][1])) {

  // This is where I want to put the command to show and hide the div with id = "show_description"
  }
 }
}

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

Ответы [ 2 ]

2 голосов
/ 13 мая 2011

Я не совсем уверен, что вы ищете, некоторые вопросы мне не ясны. Если вы скажете скрыть или показать элемент div, вы можете изменить стиль элемента div.

//Using visibility
if(show){
    document.getElementById('show_description').style.visibility = "visible";
} else {
    document.getElementById('show_description').style.visibility = "hidden";
}

//Using display
.style.display = "block"; //To show
.style.display = "none";  //To hide
1 голос
/ 13 мая 2011

Во-первых, я бы побеспокоился об использовании события var, хотя не зарезервированное слово, что будущие разработчики могут немного потерять равновесие, чтобы увидеть его при использовании не DOM-события.

Затем, чтобы начать свою страницу, установите для этого div видимость: hidden

<div id="show_description" style="visibility:hidden;"></div>

Для кода:

var targetNode = document.getElementById('show_description');
var children = targetNode.childNodes;
for(var i=0,len=children.length;i<len;i++){
   targetNode.removeChild(children[i]);
}
var newNode = document.createTextNode(year+" "+event);
targetNode.appendChild(newNode);
targetNode.style.visibility = 'visible';

По сути, вышеизложенное выбирает div, куда вы хотите, чтобы контент шел. Затем удаляет все, что находится внутри него, наконец, он создает новый текстовый узел выбранного вами года и события и добавляет его в div.

Я обнаружил, что введение в DOM-сценарий яблок очень полезно для манипулирования чистым js dom.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...