Нужно править JS и вправить в PHP
Здравствуйте! Мне нужна помощь, а заключается она в том, что нужно изменить JS и заставить его работать в шаблоне.
Код:
<HTML> Этот скрипт в зависимости от даты ставит разные картинки. Буду перечислять проблемки. :( 1) Т.к. дат может быть много, то оператор If будет повторятся неоднократно. Возможно ли это переделать с применением оператора Case, если таков существует? (плз, в примере используйте более 2х дат) 2) Нужно изменить так скрипт, чтоб он не изменял название картинки, а стиль, т.е. есть ссылка, на фоне которой, будет стоять та или ина картинка в зависимости от даты. Вот привожу часть кода с CSS: Код:
h1.logo a { и часть кода из шаблона: Код:
<h1 class="logo"> Нужно сделать соответственные изменения в этих урывках. Если Вам не составит труда отвечать готовым кодом, то я буду очень рад. Заранее спасиБо. |
Вот одного ни как не могу понять: почему некоторым проще спросить на форуме и часами ждать ответа, вместо того чтобы найти его в любом поисковике за 30 секунд?
|
Прямо ТЗ, только че-та без размера оплаты ))
|
Цитата:
|
Цитата:
|
Мда... я на следующий день сидел искал на форумах и сайтах. Много чего нашел, а то что мне нужно - увы.
Я не спец вообще в ЯС: чет могу по примерам сделать, но достаточно геморно собрать с кучи примеров нужный скрипт. Потому и задаю вопрос на форуме в надежде, что кто-то поможЕт. |
Цитата:
|
В общем я немножко разобрался, и у меня возник такой вопрос:
как можно совместить эту часть скрипта: <Script type="text/JavaScript"> function change() { today = new Date() tday = today.getDate() tmonth = today.getMonth()+1 и этой switch ( xxx ) case ( ??? ) : [команда/действие]; break; case ( ??? ) : [команда/действие]; break; default : [команда/действие]; } я не знаю как преобразовать tday и tmonth в одну переменную чтоб подставить ее вместо ( ххх ), а вместо ( ??? ) подставлять число соответствующее конкретной дать; как я выяснил єто не прокатИт: switch ( tday, tmonth ) case ( 31, 5 ) : [команда/действие]; break; case ( 13, 11 ) : [команда/действие]; break; default : [команда/действие]; |
символом конкатенации служит значек плюса "+".
а подставить в виде (31, 5) нельзя. можно сделать ("31, 5") - тогда это будет сравнение строк. или что вообще нужно? немного не понятен вопрос. |
Цитата:
Вот смотри: <Script type="text/JavaScript"> function change() { today = new Date() tday = today.getDate() tmonth = today.getMonth()+1 if (tday<10) {td = 0 + tday} else {td = tday} if (tmonth<10) {tm = 0 + tmonth} else {tm = tmonth} tdtm = [здес операция с td и tm] switch (tdtm) { case (1704) : document.logo.setAttribute('src','1.jpg'); break; case (1804) : document.logo.setAttribute('src','2.jpg'); break; default : document.logo.setAttribute('src','3.jpg'); } } </Script> У нас 18 число, 4 месяц, в этой части if (tmonth<10) {tm = 0 + tmonth} else {tm = tmonth} значение месяца - 4, преобразуется в 04, тогда выходит, что td = 18, а tm = 04 Дальше мне нужно преобразовать эти две переменные в одну - tdtm, так чтоб значение tdtm = 1804 (и не знаю кАк) :( |
aforse,
Прикалываешься или серьезно? tdtm = td + tm; |
Цитата:
Цитата:
td * 100 + tm |
Цитата:
tdtm = '' + td + tm; |
Цитата:
upd: Цитата:
Здесь: '0' + td |
И хватит все переменные в window пихать.
|
aforse, а что за картинки?
p.s. лучше задай id="logo" и document.getElementById('logo') |
Вот уменьшил количество переменных, по сравнению с предыдущим кодом :)
<Script type="text/JavaScript"> function change() { today = new Date() tday = today.getDate() tmonth = today.getMonth()+1 if (tday<10) {dt = 0 + tday * 100 + tmonth} else {dt = tday * 100 + tmonth} switch (dt) { case (2004) : document.logo.setAttribute('src','1.jpg'); break; case (2104) : document.logo.setAttribute('src','2.jpg'); break; default : document.logo.setAttribute('src','3.jpg'); } } </Script> Цитата:
Цитата:
<a id="logo" href="index.php" title="<?php echo $siteName; ?>"> в скрипт добавляю стороку document.getElementById('logo'): function change() { today = new Date() tday = today.getDate() tmonth = today.getMonth()+1 document.getElementById('logo') и это: document.logo.setAttribute('src','1.jpg'); заменяю на эТо? logo.style.backgroundImage = 'url(../images/1.jpg)'; |
Есть! Вот рабочий скрипт :dance: :
<Script type="text/JavaScript"> function change() { today = new Date() tday = today.getDate() tmonth = today.getMonth()+1 document.getElementById('logo') if (tday<10) {dt = 0 + tday * 100 + tmonth} else {dt = tday * 100 + tmonth} switch (dt) { case (2004) : logo.style.backgroundImage = 'url(1.jpg)'; break; case (2104) : logo.style.backgroundImage = 'url(2.jpg)'; break; default : logo.style.backgroundImage = 'url(3.jpg)'; } } </Script> <body onLoad="change()"> <a id="logo" href="####" title="Ыы">Йа ссылКо</a> </body> Всем спасибо за помоЩь!!! :thanks: |
if (tday<10) {dt = 0 + tday * 100 + tmonth} а зачем добавлять ноль в начале? имелось ввиду, если делать сложение строк (а не чисел), тогда нужен был бы ноль, точнее даже не ноль как число а ноль как символ ('0') if (tday<10) {dt = '0'+tday + tmonth} else {dt = ''+tday + tmonth} '' (два одинарных апострофа, а не кавычки) нужно для того, что бы dt был преобразован сразу к строковому типу. но в этом случае в case нужно будет проверять не числа а строки: '2002', '2104', ... |
Цитата:
document.logo.setAttribute('src','1.jpg'); -> document.getElementById('logo').setAttribute('src' ,'1.jpg'); причем даже можно так document.getElementById('logo').src = '1.jpg' Цитата:
|
Цитата:
|
Цитата:
|
ну лично, я не вижу где тут можно грузить сервер, разве что если на данный момент динамических страниц нету (которые на сервере генерируются) или БД не используется. Хотя даже в этих случаях я не могу сказать заранее будет ли заметно "не грузить сервер". А плюсы у серверного решения следующие: 1) удобный интерфейс для назначения картинок (не надо редактировать файлы); 2) для отображения картинок не нужен javascript (я знаю, что можно сказать в ответ на этот пункт :yes:); 3) по-моему еще что-то в голову приходило, не помню :(
|
Цитата:
Но все равно сделал бы javascript-ом. Просто смена картинок - это такая мелочь, на которую даже 5 минут потратить жалко. А тем более работать с базой и еще создавать интерфейс для назначения картинок. Разве, что после того как сайт будет доведен до идеала. Но разве такое бывает? Всегда найдется что-то более важное, на что лучше потратить время. upd: в общем мне тупо лень :) |
Часовой пояс GMT +3, время: 12:32. |