Рекламу после первого сообщения в каждой теме сделать очень просто. Не пологаясь на встроенную JQuery, так как, честно признаюсь, отвык ей пользоваться, напишу решение на js и на css.
Решение на JS
В шаблон общего вида страниц форума после условного кода $BODY$ вставляем вот такой код:
Тут ошибка: не tds, а t. Кстати, для улучшения скорости работы решения на js можно было бы во-первых, добавлять блок с рекламой не через методы DOM, а через innerHTML, во-вторых, по возможности использовать querySelectorAll.
Infamous, + можно ещё укоротить и сделать скорость работы быстрее, вот так:
Code
<script type='text/javascript'> var d=document;for(i=0;t=(d.querySelectorAll('td.postFirst')||d.getElementsByTagName('td'))[i++];)if('postFirst'==t.className)t.innerHTML+='рекламма'; </script>
p.s.: да и зачем использовать querySelectorAll, если потом опять перебираешь все с таким классом, так и так время тратится одинаковое! Поэтому можно использовать и такой вариант:
Infamous, нет, просто смотри, когда используешь кьюери селектор, а затем условку, то оно увеличивает время выполнения, ну, в общем так и так, первый предложенный мною вариант работает быстрее всех из указанных выше) Aleko, а почему ты ставишь неравество, должно быть == aka Latro
Сообщение отредактировал DSC - Пятница, 30.07.2010, 14:20
Infamous, не может первый код Алеко срабатывать за 1мс, т.к. я знаю как проверяется скорость поиска по дому, у него оно работает медленнее, т.к. я перебирал много вариантов циклов, и пришёл к данному результату, мой цикл работает за 5-6мс, обычный цикл работает за 9-16мс, и не надо мне тут наваливать что у меня гавно код, сначала опробуй, потом наяривай! aka Latro
Infamous, не будет после каждого, т.к. поиск по айди берёт за основу только первый айди! но валидным оно уже не будет, нельзя чтобы один айди использовался более одного раза! aka Latro
Infamous, слушай, хорошо, покажи мне реальный пример, и если действительно будет моя медленне чем первый вариант, то да, я соглашусь, что мой вариант очень медленный! aka Latro
Копировать страницу с темой, ставить на неё оба скрипта и заливать на хостинг, чтобы доказать тебе, что мой код быстрее? Почему я должен всё это делать вместо того, чтобы ты сам потестил?
Для всех браузеров, кроме IE, можно вообще обойтись без цикла:
Code
(function () { var text = 'РекламкО'; if ( document.querySelector ) { document.querySelector('.postFirst').innerHTML += text; } else { var e = document.getElementsByTagName('td'), l = e.length; for ( var i = 0; i < l; i++ ) { if ( e[i].className == 'postFirst' ) { e[i].innerHTML += text; break; } } } })();
Странно, потестил все скрипты на стенде. В firefox половина скриптов работает за 0-1 мс а вот в осле лажают почти все скрипты кроме моего - у него стабильно 0 мс:
Code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>js</title> </head> <body> <script> (function(){ var _=1000 while(_--)this.appendChild(document.createElement('td')); this.lastChild.className='postFirst'; document.body.appendChild(this.parentNode) }).call(document.createElement('table').appendChild(document.createElement('tr'))); alert((function(_){ /******************************/