Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Свернуть/развернуть список состоящий из массива (https://javascript.ru/forum/misc/13082-svernut-razvernut-spisok-sostoyashhijj-iz-massiva.html)

Lucklustre 14.11.2010 22:41

Свернуть/развернуть список состоящий из массива
 
Помогите найти ошибку
<html>

<script type="text/javascript">
 
function look(lst)
 {
  lst = new Array();
  for(var i=1;i<=2;i++)
   {
    lst[i] = document.getElementById('lst'+i);
	alert("lst[i]");// Проверка
   }   
  lst[i].style.display = lst[i].style.display == "block"?"none":"block";
 } 

var lnk1 = "<h4>";
var lnk2 = "<a href=javascript:look('lst');>";
var lnk3 = "";
var lnk4 = "</a>";
var lnk5 = "</h4>";
var lnk6 = "<input type=checkbox>";
var div1 = "<div>";
var div2 = "</div>";
var div3 = "<div id='lst1' style='display:none'>";
var div4 = "</div>";
var div5 = "<div id='lst2' style='display:block'>";
var div6 = "</div>";

list = new Array();
list[0] = new Array("Учебники","Поэты");
list[1] = new Array("Алгебра","Физика","Химия","Геометрия");
list[2] = new Array("А.С.Пушин","М.Ю.Лермонтов","Л.Н.Толстой");

//УЧЕБНИКИ
document.write(div1+lnk1+lnk2+list[0][0]+lnk3+lnk4+lnk5+div2);
document.writeln(div3 + "<ul><li>" + lnk6 + list[1][0] + "</li>")
document.writeln("<li>" + lnk6 + list[1][1] + "</li>")
document.writeln("<li>" + lnk6 + list[1][2] + "</li>")
document.writeln("<li>" + lnk6 + list[1][3] + "</li></ul>" + div4)
//ПОЭТЫ
document.write(div1+lnk1+lnk2+list[0][1]+lnk3+lnk4+lnk5+div2);
document.writeln(div5 + "<ul><li>" + lnk6 + list[2][0] + "</li>")
document.writeln("<li>" + lnk6 + list[2][1] + "</li>")
document.writeln("<li>" + lnk6 + list[2][2] + "</li></ul>" + div6)

</script>

<body>
<form>
</form>

</body>
</html>

monolithed 14.11.2010 23:11

Хотите верьте хотите нет, но ваш код - одна большая ошибка.

Lucklustre 14.11.2010 23:14

Вожможно, что мой код, одна большая ошибка. Предложите другой вариант.

Lucklustre 14.11.2010 23:16

я могу этот код переписать иначе, но мне хочется это сделать именно с помощью массива

Lucklustre 14.11.2010 23:30

правильно будет так:
[HTML]<html>
<head> 
<script type="text/javascript"> 
 function look(type)
  {
   param=document.getElementById(type);
   if(param.style.display == "none") param.style.display = "block";
   else param.style.display = "none"
  } 
 </script> 
</head> 
<body>
<form>
<div id="div_1" name="div_11" style="display:block">
<h4><a href="javascript:look('div1');">Поэты:</a></h4>
<div id="div1" style="display:block">
<ul>
  <li>А.С.Пушкин</li>
  <li>М.Ю.Лермонтов</li>
  <li>Л.Н.Толстой</li>  
</ul>
</div></div>
</form>
</body>
</html>[/HTML]

или так:
[HTML]<html>
<head> 
<script type="text/javascript"> 
 function look(type)
  {
   param=document.getElementById(type);
   param.style.display = param.style.display == "block"?"none":"block";   
  } 
 </script> 
</head> 
<body>
<form>
<div id="div_1" name="div_11" style="display:block">
<h4><a href="javascript:look('div1');">Поэты:</a></h4>
<div id="div1" style="display:block">
<ul>
  <li>А.С.Пушкин</li>
  <li>М.Ю.Лермонтов</li>
  <li>Л.Н.Толстой</li>  
</ul>
</div></div>
</form>
</body>
</html> [/HTML]

Gvozd 15.11.2010 09:22

Lucklustre,
перенес тему в общие.
следите внимательнее за тем, в какой раздел пишите!

ksa 15.11.2010 10:18

Цитата:

Сообщение от Lucklustre
мне хочется это сделать именно с помощью массива

Как вариант...

<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<script>
function Add() {
	var o=document.getElementById('list')
	var options=new Array("Алгебра","Физика","Химия","Геометрия")
	var i,opt
	for (i=0; i<options.length; i++) {
		opt=document.createElement('option')
		opt.innerHTML=options[i]
		o.appendChild(opt)
	}
}
</script>
</head>
<body onload='Add()'>
<select id='list'>
</select>
</body>
</html>

Lucklustre 15.11.2010 10:42

Код мне нравится. Компактно, красиво. Я теперь по возможности его буду применять вместо тега select.
Но мне всё-таки хочется узнать почему мой первоначальный код одна большая ошибка:)

ksa 15.11.2010 10:53

Цитата:

Сообщение от Lucklustre
почему мой первоначальный код одна большая ошибка

Вот это зачем?
function look(lst)
 {
  lst = new Array();
  for(var i=1;i<=2;i++)
   {
    lst[i] = document.getElementById('lst'+i);
	alert("lst[i]");// Проверка
   }   
  lst[i].style.display = lst[i].style.display == "block"?"none":"block";
 }


Это вообще жуть полная...
var lnk1 = "<h4>";
var lnk2 = "<a href=javascript:look('lst');>";
var lnk3 = "";
var lnk4 = "</a>";
var lnk5 = "</h4>";
var lnk6 = "<input type=checkbox>";
var div1 = "<div>";
var div2 = "</div>";
var div3 = "<div id='lst1' style='display:none'>";
var div4 = "</div>";
var div5 = "<div id='lst2' style='display:block'>";
var div6 = "</div>";


Зачем 2-хмерный массив?
list = new Array();
list[0] = new Array("Учебники","Поэты");
list[1] = new Array("Алгебра","Физика","Химия","Геометрия");
list[2] = new Array("А.С.Пушин","М.Ю.Лермонтов","Л.Н.Толстой");


Циклы отменили?
//УЧЕБНИКИ
document.write(div1+lnk1+lnk2+list[0][0]+lnk3+lnk4+lnk5+div2);
document.writeln(div3 + "<ul><li>" + lnk6 + list[1][0] + "</li>")
document.writeln("<li>" + lnk6 + list[1][1] + "</li>")
document.writeln("<li>" + lnk6 + list[1][2] + "</li>")
document.writeln("<li>" + lnk6 + list[1][3] + "</li></ul>" + div4)
//ПОЭТЫ
document.write(div1+lnk1+lnk2+list[0][1]+lnk3+lnk4+lnk5+div2);
document.writeln(div5 + "<ul><li>" + lnk6 + list[2][0] + "</li>")
document.writeln("<li>" + lnk6 + list[2][1] + "</li>")
document.writeln("<li>" + lnk6 + list[2][2] + "</li></ul>" + div6)


Да и к
document.writeln()

отношение теперь сомнительное...

Lucklustre 15.11.2010 11:55

Теперь когда Вы мне разложили весь мой код по полочкам, я отвечу. Ранее я сделал калькулятор. На форме присутсвовали элементы: select, radio, checkbox. При изменеии значения в select или при включении и выключении checkbox или переключении radio.Cоответсвенно и изменялась сумма. К элементам я обращался через id. Калькулятор состоял из 3 файлов *html, *.js, *.css. Так вот в html файле у меня примерно 400 строк. А в js файле приближается к 4000 тыс. строк. Калькулятор нормально работает во всех версиях IE, FF, Opera. Мне посоветовали сделать калькулятор с использованием массивов, дабы уменьшить размер вот я и заморочился.

Kolyaj 15.11.2010 12:10

Цитата:

Сообщение от Lucklustre
А в js файле приближается к 4000 тыс. строк.

Мощный такой калькулятор. Интегралы считает?

ksa 15.11.2010 22:24

Цитата:

Сообщение от Lucklustre
html файле у меня примерно 400 строк
...
в js файле приближается к 4000 тыс. строк

У калькулятора? :blink:

Lucklustre 15.11.2010 23:27

Нет, не интегралы:) . Я просил помощи при написании калькулятора.Так завсегдай форума Sweet надолго отбил у меня желание общения на форуме. Может надо быть помягче к людям. В инете нашёл такую подскажку, что писать калькуляторы это дело обыденное и даже для чайники с этим легко справятся. Надо пользоваться операторами if и else. В файле со скриптами у меня 18 функций, показать/скрыть значения, активировать/деактивировать. А фунция калькулятора одна насчитывает 3500 строк.

SV0L0CH 16.11.2010 00:37

Lucklustre,
http://lurkmore.ru/Doing_it_wrong
:yes:

ksa 16.11.2010 08:41

Цитата:

Сообщение от Lucklustre
завсегдай форума Sweet надолго отбил у меня желание общения на форуме

Почитай на досуге, полезная статейка... ;)

Lucklustre, сколько я тут, видел только дельные советы. Просто не все понимают что они действительно дельные. :)
Нужно уметь ценить помощь незнакомых людей, тем паче помощь бесплатную. ;)


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