Свернуть/развернуть список состоящий из массива
Помогите найти ошибку
<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, время: 11:59. |