Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2010, 22:41
Интересующийся
Отправить личное сообщение для Lucklustre Посмотреть профиль Найти все сообщения от Lucklustre
 
Регистрация: 04.10.2010
Сообщений: 14

Свернуть/развернуть список состоящий из массива
Помогите найти ошибку
<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>
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2010, 23:11
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Хотите верьте хотите нет, но ваш код - одна большая ошибка.
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2010, 23:14
Интересующийся
Отправить личное сообщение для Lucklustre Посмотреть профиль Найти все сообщения от Lucklustre
 
Регистрация: 04.10.2010
Сообщений: 14

Вожможно, что мой код, одна большая ошибка. Предложите другой вариант.
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2010, 23:16
Интересующийся
Отправить личное сообщение для Lucklustre Посмотреть профиль Найти все сообщения от Lucklustre
 
Регистрация: 04.10.2010
Сообщений: 14

я могу этот код переписать иначе, но мне хочется это сделать именно с помощью массива
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2010, 23:30
Интересующийся
Отправить личное сообщение для Lucklustre Посмотреть профиль Найти все сообщения от Lucklustre
 
Регистрация: 04.10.2010
Сообщений: 14

правильно будет так:
[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]
Ответить с цитированием
  #6 (permalink)  
Старый 15.11.2010, 09:22
Аватар для Gvozd
Матрос
Отправить личное сообщение для Gvozd Посмотреть профиль Найти все сообщения от Gvozd
 
Регистрация: 04.04.2008
Сообщений: 6,246

Lucklustre,
перенес тему в общие.
следите внимательнее за тем, в какой раздел пишите!
Ответить с цитированием
  #7 (permalink)  
Старый 15.11.2010, 10:18
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от 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>
Ответить с цитированием
  #8 (permalink)  
Старый 15.11.2010, 10:42
Интересующийся
Отправить личное сообщение для Lucklustre Посмотреть профиль Найти все сообщения от Lucklustre
 
Регистрация: 04.10.2010
Сообщений: 14

Код мне нравится. Компактно, красиво. Я теперь по возможности его буду применять вместо тега select.
Но мне всё-таки хочется узнать почему мой первоначальный код одна большая ошибка
Ответить с цитированием
  #9 (permalink)  
Старый 15.11.2010, 10:53
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,118

Сообщение от 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()

отношение теперь сомнительное...
Ответить с цитированием
  #10 (permalink)  
Старый 15.11.2010, 11:55
Интересующийся
Отправить личное сообщение для Lucklustre Посмотреть профиль Найти все сообщения от Lucklustre
 
Регистрация: 04.10.2010
Сообщений: 14

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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заполнить список значениями из динамически созданного выпадающего списка zhuzha Элементы интерфейса 0 17.08.2010 14:40
Как получить список пользовательских функций объекта window? Маэстро Events/DOM/Window 13 03.07.2010 13:20
Как прочитать список имён элементов в Cookie? Бобр Общие вопросы Javascript 6 09.02.2010 08:47
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53
вставка элементов массива в текстовую форму по клику olezyk Общие вопросы Javascript 3 21.03.2009 22:01