Свернуть/развернуть список состоящий из массива
Помогите найти ошибку
<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> |
Хотите верьте хотите нет, но ваш код - одна большая ошибка.
|
Вожможно, что мой код, одна большая ошибка. Предложите другой вариант.
|
я могу этот код переписать иначе, но мне хочется это сделать именно с помощью массива
|
правильно будет так:
[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] |
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> |
Код мне нравится. Компактно, красиво. Я теперь по возможности его буду применять вместо тега select.
Но мне всё-таки хочется узнать почему мой первоначальный код одна большая ошибка:) |
Цитата:
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() отношение теперь сомнительное... |
Теперь когда Вы мне разложили весь мой код по полочкам, я отвечу. Ранее я сделал калькулятор. На форме присутсвовали элементы: select, radio, checkbox. При изменеии значения в select или при включении и выключении checkbox или переключении radio.Cоответсвенно и изменялась сумма. К элементам я обращался через id. Калькулятор состоял из 3 файлов *html, *.js, *.css. Так вот в html файле у меня примерно 400 строк. А в js файле приближается к 4000 тыс. строк. Калькулятор нормально работает во всех версиях IE, FF, Opera. Мне посоветовали сделать калькулятор с использованием массивов, дабы уменьшить размер вот я и заморочился.
|
Цитата:
|
Цитата:
|
Нет, не интегралы:) . Я просил помощи при написании калькулятора.Так завсегдай форума Sweet надолго отбил у меня желание общения на форуме. Может надо быть помягче к людям. В инете нашёл такую подскажку, что писать калькуляторы это дело обыденное и даже для чайники с этим легко справятся. Надо пользоваться операторами if и else. В файле со скриптами у меня 18 функций, показать/скрыть значения, активировать/деактивировать. А фунция калькулятора одна насчитывает 3500 строк.
|
|
Цитата:
Lucklustre, сколько я тут, видел только дельные советы. Просто не все понимают что они действительно дельные. :) Нужно уметь ценить помощь незнакомых людей, тем паче помощь бесплатную. ;) |
Часовой пояс GMT +3, время: 01:58. |