Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Странности с name и id [2]
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (3): « 1 [2] 3 » 

> Без описания
Furax
Отправлено: 31 Марта, 2008 - 10:39:18
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Systemnik
id должен состоять из цифр, букв и символов "_", причём не может начинаться с цифры. Квадратные скобки в id не допускаются. Обычно делают id в группе объектов типа таких: 'hide0', 'hide1', ... .
id должен быть уникален. document.getElementById() возвращает объект с переданным id, если он существует, причём в единственном экземпляре; если id встречается дважды, то поведение не определено. Массив не возвращается никогда!

Что за конструкция
CODE:
/'
...
...
'/
? В слэшах в JavaScript идут регулярные выражения. Строковый литерал не может распологаться в несколько строк!

Думай ещё. Подмигивание
 
 Top
Systemnik Администратор
Отправлено: 31 Марта, 2008 - 10:43:56
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




Так а ка тогда я должен уместить такой большой код в одну строку... Растерялся

Цитата:
Думай ещё.

Подумаю Улыбка

Цитата:
Массив не возвращается никогда!

А ведь тогда мы с радиобаттонами.. массив получили... Растерялся
тогда.. я даже не представляю что делать дальше..

(Отредактировано автором: 31 Марта, 2008 - 10:47:51)

 
 Top
Systemnik Администратор
Отправлено: 31 Марта, 2008 - 10:59:48
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




Вот это максимум того что я могу сделать

CODE:
<html>
<head>
<title>
Скрытие и показывание текста
</title>
</head>
<body>
<div id="code">
divs
</div>
<div id="code">
divs
</div>
<script language="JavaScript">
function display() {
getElementById('hide'+i).style.display = '';
}
function notdisplay() {
getElementById('hide'+i).style.display = 'none';
}
alert(document.getElementById("code").length);
for(var i=0; i>document.getElementById("code").length; i++) {
document.write('<div id="hide"+i>gf</div>');
document.write('<input type=button onClick="display();" value="Показать">');
document.write('<input type=button onClick="notdisplay();" value="Скрыть">');
}
</script>
</body>
</html>
 
 Top
Furax
Отправлено: 31 Марта, 2008 - 21:51:12
Post Id



Бледнотик


Покинул форум
Сообщений всего: 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);


Думаю, если Ты последуешь этим пяти советам (или даже четырём первым), всё должно заработать.
 
 Top
Systemnik Администратор
Отправлено: 01 Апреля, 2008 - 04:23:45
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




Цитата:
А что, размер строки ограничен?

Так а если я схитрю и напишу так:
CODE:
document.write('string1'+
'string2'+
'string3');

Это будет нормально?? Растерялся
Цитата:
Но ведь там был не getElementById! Это специфичное для радиобатонов поведение...

Стоп значит для объектов с одинаковыми именми массив не возврашается?? Растерялся (кроме радиобаттонов)
Цитата:
которое можно просто прописать в переменной.

такссс...
щас я все разьясню.. я пишу спойлер для форума.. спойлер нужен чтобы сворачивать\разворачиать код..
в файле бб кодес темплейт размешен темплейт ббкода..
тоесть вот такого вида
самый прикол в том что в одном файле таких темплейтов... короче там все ббкоды..
и б и у и коде цитата все все вы спросите как он узнает где нужный??
да я сам удивляюсь.. как..
там стоит коментарии (якобы коментарий)
CODE:
<!--code-->

и когда пп этот код подгружает... он его вообще вырезает.. и так ухнает где нужный ббкод... сложно? очень сложно Огорчение Огорчение
не Фуракс вполне возможно .. тебе это кажется.. ерундой.. короче это уже оффтоп пошел. Улыбка

CODE:
<!--ds-->
<code class="dsd">
{code} (переменная получается из пхп)
</code>
<!df-->

Тоесть если в топики такие блоков десять.. удет вставлятся 10 таких темплейтов..
тк это phpBB 2 у ExBB все чуть проше...
Те два дива перед кодом и указывают на колличество их.. а как я это узнаю в переменной?? Если тока задам сам... но ведь для этого либо нужно получить колличество из пхп.. либо.. незнаю как...
коорче подумав головой я понял.. тут без получения колличества этих блоков..
из пхп... необойтись.. я попробую... получить это самое колличество.. Подмигивание
буду отписыватся в тему если че выложу листинги нужных файлов..
надеюсь вы мне поможете.. Закатив глазки Я напишу этот спойлер для двух любимых форумов ExBB и phpBB 2 (именно 2) Язычок

Цитата:
Во-вторых, функции display() и notdisplay() должны принимать в качестве аргумента номер divа, который надо скрыть/показать - они же не знают, что такое i! Соответствующие кнопки должны этот номер им явно передавать.

Да согласен... ступил.. Растерялся Растерялся
Цитата:
В-четвёртых, вот здесь ошибка: не

пофиксим Подмигивание
 
 Top
Systemnik Администратор
Отправлено: 01 Апреля, 2008 - 04:41:26
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




Так.. во поправил.. какая тоошибка..

CODE:
<html>
<head>
<title>
Скрытие и показывание текста
</title>
</head>
<body>
<script language="JavaScript">
function display(numberd) {
getElementById('hide'+numberd).style.display = '';
}
function notdisplay(numbern) {
getElementById('hide'+numbern).style.display = 'none';
}
var g=5;
for(var i=0; i<g; i++) {
document.write('<div id="hide'+i+'">gf</div>');
document.write('<input type=button onClick="display('+i+');" value="Показать">');
document.write('<input type=button onClick="notdisplay('+i+');" value="Скрыть">');
}
</script>
</body>
</html>

Попробовал переместить цикл.. вперед.. тожесамое.. Растерялся
 
 Top
Furax
Отправлено: 01 Апреля, 2008 - 04:52:15
Post Id



Бледнотик


Покинул форум
Сообщений всего: 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 нужен для того, чтобы не возникала ошибка, если массив ещё не заполнен.
 
 Top
Furax
Отправлено: 01 Апреля, 2008 - 04:55:16
Post Id



Бледнотик


Покинул форум
Сообщений всего: 1472
Дата рег-ции: Март 2007  
Откуда: Иркутск, Сибирь, СССР

Карма 32




Systemnik
getElementById() - это не функция, а метод объекта document. Стало быть, надо писать document.getElementById(...).
 
 Top
Systemnik Администратор
Отправлено: 01 Апреля, 2008 - 08:25:02
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




Цитата:
раньше JavaScriptа,

интересненько.. кто же их тогда обрабатывал?? Ведь php и в помине небыло..
Растерялся (только компилируемые??)
Цитата:
getElementById() - это не функция, а метод объекта document. Стало быть, надо писать document.getElementById(...).

ОК
Цитата:
Насчёт нескольких строк: лучше делать document.write() в самом конце, т. е. не в цикле, а после него. На производительность положительно влияет.

Стоп.. если я напишу не вцикле.. то у меня будет не много кнопок а две..
а мне надо на каждый див 2 кнопки...

(Отредактировано автором: 01 Апреля, 2008 - 08:29:30)

 
 Top
Systemnik Администратор
Отправлено: 01 Апреля, 2008 - 08:33:12
Post Id



ExBB Developer Team


Покинул форум
Сообщений всего: 778
Дата рег-ции: Дек. 2007  

Карма 0




Угу.. щас.. спасибо попробую..

У меня вопрос.. как средствами пхп сгенерировать рандомное число?? Растерялся

(Отредактировано автором: 01 Апреля, 2008 - 08:53:08)

 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0, скрытых: 0)
« JavaScript »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0499]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33