Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Отображение определенных элементов таблицы при нажатии на radio (https://javascript.ru/forum/dom-window/52104-otobrazhenie-opredelennykh-ehlementov-tablicy-pri-nazhatii-na-radio.html)

Kichiro 04.12.2014 11:20

Отображение определенных элементов таблицы при нажатии на radio
 
Доброго времени суток.

Суть: необходимо создать интерактивную таблицу. В левой части таблицы блок с параметрами (input radio), в правой - таблица со скрытыми ячейками (style: "display:none")
Необходимо:
При выборе определенного radio показывать определённые ячейки таблицы, при этом важно, чтобы при смене radio показывались уже другие ячейки, а остальные скрывались.

Пример кода:
<!DOCTYPE html>
<html>
<head>
<meta  content="text/html; charset=UTF-8"  http-equiv="content-type">
<title>Пример интерактивной процедуры</title>

<script language="JavaScript" type="text/javascript">


function show(id){document.getElementById(id).style.display="block";}

function instruction ()
{
	if (f.param[0].checked)
		{	
			show("step_1");
			show("step_3");
			show("step_5");			
		}
	else if (f.param[1].checked)
		{			
			show("step_2");
			show("step_4");
			show("step_6");			
		}	
}

</script>
</head>
<body>
<form name="f">
<table width="100%">
<tr>
<td colspan="2">Заголовок процедуры </td>
</tr>	
<tr>
<td width="40%">
<table id="params">
<tr>
	<td id="param_1" onClick="instruction ();">
	<input type="radio" name="param" />параметр 1
	</td>
</tr>	
<tr>
	<td id="param_2" onClick="instruction ();">
	<input type="radio" name="param" />параметр 2	
	</td>
</tr>
</table>	
</td>	
<td width="60%">
<table  style="display: ">
<tr id="step_1" style="display: none">
<td>Шаг_1</td>	
</tr>
<tr id="step_2" style="display: none">
<td>Шаг_2</td>	
</tr>
<tr id="step_3" style="display: none">
<td>Шаг_3</td>	
</tr>
<tr id="step_4" style="display: none">
<td>Шаг_4</td>	
</tr>
<tr id="step_5" style="display: none">
<td>Шаг_5</td>	
</tr>
<tr id="step_6" style="display: none">
<td>Шаг_6</td>	
</tr>	
</table>	
</td>
</tr>	
</table>
</form>	
</body>
</html>


Имеющийся скрипт работает только в одном направлении: показывает элементы. Если пробежаться по всем radio получится каша (будут видны все элементы).
Понимаю, что нужно поменять логику функции show(id), но не хватает мозгов/знаний, как это сделать.

Прошу помощи.
Заранее благодарен.

jaroslav.tavgen 04.12.2014 13:53

<!DOCTYPE html>
<html>
<head>
<meta  content="text/html; charset=UTF-8"  http-equiv="content-type">
<title>Пример интерактивной процедуры</title>
<style>
.left, .right{
display:inline-block;
padding-right:100px;
}
#step_1, #step_2, #step_3, #step_4, #step_5, #step_6{
display:none;
}
</style>

<script language="JavaScript" type="text/javascript">


function show(id){document.getElementById('step_'+id).style.display="block";}
function hide(id){document.getElementById('step_'+id).style.display="none";}

function instruction (ind){
    if (ind==1) {
		document.getElementById('radio-1').checked = true;	
	    document.getElementById('radio-2').checked = false;	
		
	    for (var i=1;i<6;i=i+2){
		    show (i);
			hide(i+1);
		}		
	}
	else{
		document.getElementById('radio-1').checked = false;	
	    document.getElementById('radio-2').checked = true;	

	    for (var i=2;i<7;i=i+2){
		    show (i);
			hide(i-1);
		}			
	}
}
</script>
</head>
<body>
<span class="left">
<div>Заголовок процедуры</div>
<div>
	<input type="radio" id="radio-1"  onClick="instruction (1)" />Параметр 1
</div>
<div>
	<input type="radio" id="radio-2" onClick="instruction (2)" />Параметр 2	
</div>
</span>
<span class="right">
<div id="step_1">Шаг_1</div>
<div id="step_2">Шаг_2</div>
<div id="step_3">Шаг_3</div>
<div id="step_4">Шаг_4</div>	
<div id="step_5">Шаг_5</div>
<div id="step_6">Шаг_6</div>	
</span>
</body>
</html>

Kichiro 04.12.2014 18:05

То, что нужно. Спасибо большое.


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