Страниц (3): « 1 [2] 3 » |
|
Без описания |
Поиск в теме | Версия для печати |
Furax |
Отправлено: 31 Марта, 2008 - 10:39:18
|
Бледнотик
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007
Откуда: Иркутск, Сибирь, СССР
Карма 32
|
Systemnik
id должен состоять из цифр, букв и символов "_", причём не может начинаться с цифры. Квадратные скобки в id не допускаются. Обычно делают id в группе объектов типа таких: 'hide0', 'hide1', ... .
id должен быть уникален. document.getElementById() возвращает объект с переданным id, если он существует, причём в единственном экземпляре; если id встречается дважды, то поведение не определено. Массив не возвращается никогда!
Что за конструкция? В слэшах в JavaScript идут регулярные выражения. Строковый литерал не может распологаться в несколько строк!
Думай ещё. |
|
|
Furax |
Отправлено: 31 Марта, 2008 - 21:51:12
|
Бледнотик
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007
Откуда: Иркутск, Сибирь, СССР
Карма 32
|
Systemnik пишет:Так а ка тогда я должен уместить такой большой код в одну строку... А что, размер строки ограничен?
Systemnik пишет:А ведь тогда мы с радиобаттонами.. массив получили... Но ведь там был не getElementById! Это специфичное для радиобатонов поведение...
Итак. Во-первых, убери из кода пару divов, что стоят ещё перед скриптом - они не нужны, коли Ты уже решил генерить divы динамически. Они и используются-то у Тебя только для получения количества тех, что нужно сгенерировать, которое можно просто прописать в переменной.
Во-вторых, функции display() и notdisplay() должны принимать в качестве аргумента номер divа, который надо скрыть/показать - они же не знают, что такое i! Соответствующие кнопки должны этот номер им явно передавать.
В-третьих, в цикле вместо "меньше" написано "больше".
В-четвёртых, вот здесь ошибка: неCODE:'<div id="hide"+i>gf</div>' , аCODE:'<div id="hide' + i +'">gf</div>'
И наконец, постоянно делать document.write() тоже нехорошо. Лучше сначала сгенерировать всю строку, забив её в переменную, а уж потом сделать write:CODE:var x='';
for (...)
x+='...';
document.write(x);
Думаю, если Ты последуешь этим пяти советам (или даже четырём первым), всё должно заработать. |
|
|
Furax |
Отправлено: 01 Апреля, 2008 - 04:52:15
|
Бледнотик
Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007
Откуда: Иркутск, Сибирь, СССР
Карма 32
|
Systemnik
id должен быть уникален. Без исключений.
name - тоже. Единственное исключение - радиобатоны, которые были разработаны куда раньше JavaScriptа, оттого и морока. Но если радиобатоны имеют id, id обязаны быть разными (в отличие от name).
Насчёт нескольких строк: лучше делать document.write() в самом конце, т. е. не в цикле, а после него. На производительность положительно влияет.
Очевидно, если PHP генерирует divы, то он и должен давать им уникальные id. Хотя возможен обходной манёвр: например, если PHP всем нужным Тебе блокам прописывает class="myBlock" (и только им!), можно в начале документа добавить такой код, а в конце вызвать функцию fillDivs():CODE:var divs=[];
function fillDivs()
{
var i, allDivs = document.getElementsByTagName('div');
for (i=0; i<allDivs.length; i++)
if (allDivs[i].className == 'myBlock')
divs.push(allDivs[i]);
}
После этого глобальный массив divs будет содержать указатели на все объекты divов с классом myBlock (по-моему, как раз в порядке следования в коде - проверь!). Тогда можно будет делать так:CODE:function show(Index)
{
if (divs[Index])
divs[Index].style.display='block';
} if нужен для того, чтобы не возникала ошибка, если массив ещё не заполнен. |
|
|
Systemnik |
Отправлено: 01 Апреля, 2008 - 08:25:02
|
ExBB Developer Team
Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007
Карма 0
|
Цитата: раньше JavaScriptа,
интересненько.. кто же их тогда обрабатывал?? Ведь php и в помине небыло..
(только компилируемые??)
Цитата:getElementById() - это не функция, а метод объекта document. Стало быть, надо писать document.getElementById(...).
ОК
Цитата:Насчёт нескольких строк: лучше делать document.write() в самом конце, т. е. не в цикле, а после него. На производительность положительно влияет.
Стоп.. если я напишу не вцикле.. то у меня будет не много кнопок а две..
а мне надо на каждый див 2 кнопки...(Отредактировано автором: 01 Апреля, 2008 - 08:29:30) |
|
|
|
Поиск в теме | Версия для печати |
Страниц (3): « 1 [2] 3 » |
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0, скрытых: 0) |
« JavaScript » |
Все гости форума могут просматривать этот раздел. Только администраторы и модераторы могут создавать новые темы в этом разделе. Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
|
|
|